Skip to content
This repository was archived by the owner on Mar 21, 2022. It is now read-only.

Commit 0d64da0

Browse files
Merge pull request #1 from ExplorViz/dev
Thesis version
2 parents 18ef5f8 + ed662a3 commit 0d64da0

File tree

151 files changed

+2984
-197
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+2984
-197
lines changed

.vscode/launch.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
// Use IntelliSense to learn about possible attributes.
3+
// Hover to view descriptions of existing attributes.
4+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5+
"version": "0.2.0",
6+
"configurations": [
7+
{
8+
"type": "node",
9+
"request": "launch",
10+
"name": "Launch Program",
11+
"program": "${workspaceFolder}\\serve"
12+
}
13+
]
14+
}

addon/adapters/sequence.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import JSONAPIAdapter from 'ember-data/adapters/json-api';
2+
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
3+
import ENV from 'explorviz-frontend/config/environment';
4+
5+
export default JSONAPIAdapter.extend(DataAdapterMixin,{
6+
7+
host: ENV.APP.API_ROOT,
8+
9+
init() {
10+
11+
this.set('headers', {
12+
"Accept": "application/vnd.api+json"
13+
});
14+
15+
},
16+
17+
urlForUpdateRecord(id) {
18+
const baseUrl = this.buildURL();
19+
return `${baseUrl}/v1/tutorials/sequences/${id}`;
20+
},
21+
22+
urlForDeleteRecord(id) {
23+
const baseUrl = this.buildURL();
24+
return `${baseUrl}/v1/tutorials/sequences/${id}`;
25+
},
26+
27+
urlForFindAll() {
28+
const baseUrl = this.buildURL();
29+
return `${baseUrl}/v1/tutorials/sequences/`;
30+
},
31+
// @Override
32+
urlForQueryRecord() {
33+
const baseUrl = this.buildURL();
34+
return `${baseUrl}/v1/tutorials/sequences/`;
35+
},
36+
urlForFindRecord(id) {
37+
const baseUrl = this.buildURL();
38+
return `${baseUrl}/v1/tutorials/sequences/${id}`;
39+
},
40+
41+
// @Override
42+
// Overrides URL for model.save()
43+
urlForCreateRecord() {
44+
const baseUrl = this.buildURL();
45+
return `${baseUrl}/v1/tutorials/sequences/`;
46+
},
47+
48+
49+
authorize(xhr) {
50+
let { access_token } = this.get('session.data.authenticated');
51+
xhr.setRequestHeader('Authorization', `Bearer ${access_token}`);
52+
}
53+
54+
});

addon/adapters/step.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import JSONAPIAdapter from 'ember-data/adapters/json-api';
2+
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
3+
import ENV from 'explorviz-frontend/config/environment';
4+
5+
export default JSONAPIAdapter.extend(DataAdapterMixin,{
6+
7+
host: ENV.APP.API_ROOT,
8+
9+
init() {
10+
11+
this.set('headers', {
12+
"Accept": "application/vnd.api+json"
13+
});
14+
15+
},
16+
17+
urlForUpdateRecord(id) {
18+
const baseUrl = this.buildURL();
19+
return `${baseUrl}/v1/tutorials/steps/${id}`;
20+
},
21+
22+
urlForDeleteRecord(id) {
23+
const baseUrl = this.buildURL();
24+
return `${baseUrl}/v1/tutorials/steps/${id}`;
25+
},
26+
27+
urlForFindAll() {
28+
const baseUrl = this.buildURL();
29+
return `${baseUrl}/v1/tutorials/steps/`;
30+
},
31+
// @Override
32+
urlForQueryRecord() {
33+
const baseUrl = this.buildURL();
34+
return `${baseUrl}/v1/tutorials/steps`;
35+
},
36+
urlForFindRecord(id) {
37+
const baseUrl = this.buildURL();
38+
return `${baseUrl}/v1/tutorials/steps/${id}`;
39+
},
40+
41+
// @Override
42+
// Overrides URL for model.save()
43+
urlForCreateRecord() {
44+
const baseUrl = this.buildURL();
45+
return `${baseUrl}/v1/tutorials/steps/`;
46+
},
47+
48+
49+
authorize(xhr) {
50+
let { access_token } = this.get('session.data.authenticated');
51+
xhr.setRequestHeader('Authorization', `Bearer ${access_token}`);
52+
}
53+
54+
});

addon/adapters/tutorial.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import JSONAPIAdapter from 'ember-data/adapters/json-api';
2+
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
3+
import ENV from 'explorviz-frontend/config/environment';
4+
5+
export default JSONAPIAdapter.extend(DataAdapterMixin,{
6+
7+
host: ENV.APP.API_ROOT,
8+
9+
init() {
10+
11+
this.set('headers', {
12+
"Accept": "application/vnd.api+json"
13+
});
14+
15+
},
16+
17+
urlForUpdateRecord(id) {
18+
const baseUrl = this.buildURL();
19+
return `${baseUrl}/v1/tutorials/${id}`;
20+
},
21+
22+
urlForDeleteRecord(id) {
23+
const baseUrl = this.buildURL();
24+
return `${baseUrl}/v1/tutorials/${id}`;
25+
},
26+
27+
urlForFindAll() {
28+
const baseUrl = this.buildURL();
29+
return `${baseUrl}/v1/tutorials/`;
30+
},
31+
// @Override
32+
urlForQueryRecord() {
33+
const baseUrl = this.buildURL();
34+
return `${baseUrl}/v1/tutorials`;
35+
},
36+
urlForFindRecord(id) {
37+
const baseUrl = this.buildURL();
38+
return `${baseUrl}/v1/tutorials/${id}`;
39+
},
40+
41+
// @Override
42+
// Overrides URL for model.save()
43+
urlForCreateRecord() {
44+
const baseUrl = this.buildURL();
45+
return `${baseUrl}/v1/tutorials/`;
46+
},
47+
48+
49+
authorize(xhr) {
50+
let { access_token } = this.get('session.data.authenticated');
51+
xhr.setRequestHeader('Authorization', `Bearer ${access_token}`);
52+
}
53+
54+
});
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import JSONAPIAdapter from 'ember-data/adapters/json-api';
2+
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
3+
import ENV from 'explorviz-frontend/config/environment';
4+
5+
export default JSONAPIAdapter.extend(DataAdapterMixin,{
6+
7+
host: ENV.APP.API_ROOT,
8+
9+
init() {
10+
11+
this.set('headers', {
12+
"Accept": "application/vnd.api+json"
13+
});
14+
15+
},
16+
17+
urlForUpdateRecord(id) {
18+
const baseUrl = this.buildURL();
19+
return `${baseUrl}/v1/tutorials/landscapes/${id}`;
20+
},
21+
22+
urlForDeleteRecord(id) {
23+
const baseUrl = this.buildURL();
24+
return `${baseUrl}/v1/tutorials/landscapes/${id}`;
25+
},
26+
urlForFindAll() {
27+
const baseUrl = this.buildURL();
28+
return `${baseUrl}/v1/tutorials/landscapes/all`;
29+
},
30+
// @Override
31+
urlForQueryRecord() {
32+
const baseUrl = this.buildURL();
33+
return `${baseUrl}/v1/tutorials/landscapes/by-timestamp`;
34+
},
35+
urlForFindRecord(id) {
36+
const baseUrl = this.buildURL();
37+
return `${baseUrl}/v1/tutorials/landscapes/${id}`;
38+
},
39+
40+
// @Override
41+
// Overrides URL for model.save()
42+
urlForCreateRecord() {
43+
const baseUrl = this.buildURL();
44+
return `${baseUrl}/v1/tutorials/landscapes/import`;
45+
},
46+
47+
48+
authorize(xhr) {
49+
let { access_token } = this.get('session.data.authenticated');
50+
xhr.setRequestHeader('Authorization', `Bearer ${access_token}`);
51+
}
52+
53+
});
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import JSONAPIAdapter from 'ember-data/adapters/json-api';
2+
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
3+
import ENV from 'explorviz-frontend/config/environment';
4+
5+
export default JSONAPIAdapter.extend(DataAdapterMixin,{
6+
7+
host: ENV.APP.API_ROOT,
8+
9+
init() {
10+
11+
this.set('headers', {
12+
"Accept": "application/vnd.api+json"
13+
});
14+
15+
},
16+
17+
urlForUpdateRecord(id) {
18+
const baseUrl = this.buildURL();
19+
return `${baseUrl}/v1/tutorials/timestamps/${id}`;
20+
},
21+
22+
urlForDeleteRecord(id) {
23+
const baseUrl = this.buildURL();
24+
return `${baseUrl}/v1/tutorials/timestamps/${id}`;
25+
},
26+
urlForFindAll() {
27+
const baseUrl = this.buildURL();
28+
return `${baseUrl}/v1/tutorials/timestamps/`;
29+
},
30+
// @Override
31+
urlForQueryRecord() {
32+
const baseUrl = this.buildURL();
33+
return `${baseUrl}/v1/tutorials/timestamps/`;
34+
},
35+
urlForFindRecord(id) {
36+
const baseUrl = this.buildURL();
37+
return `${baseUrl}/v1/tutorials/timestamps/${id}`;
38+
},
39+
40+
// @Override
41+
// Overrides URL for model.save()
42+
urlForCreateRecord() {
43+
const baseUrl = this.buildURL();
44+
return `${baseUrl}/v1/tutorials/timestamps/import`;
45+
},
46+
47+
48+
authorize(xhr) {
49+
let { access_token } = this.get('session.data.authenticated');
50+
xhr.setRequestHeader('Authorization', `Bearer ${access_token}`);
51+
}
52+
53+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import Interaction from 'explorviz-frontend/utils/application-rendering/interaction'
2+
import { inject as service } from "@ember/service";
3+
import AlertifyHandler from 'explorviz-frontend/mixins/alertify-handler';
4+
5+
export default Interaction.extend(AlertifyHandler,{
6+
landscapeService: service(),
7+
tutorialService: service(),
8+
store: service()
9+
});
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import layout from '../templates/components/application-visualization';
2+
import ApplicationRendering from 'explorviz-frontend/components/visualization/rendering/application-rendering';
3+
import AlertifyHandler from 'explorviz-frontend/mixins/alertify-handler';
4+
import { inject as service } from '@ember/service';
5+
export default ApplicationRendering.extend(AlertifyHandler,{
6+
layout,
7+
renderingService: service(),
8+
tutorialService: service(),
9+
landscapeService: service(),
10+
interactionModel:null,
11+
initInteraction(){
12+
this._super(...arguments);
13+
const self = this;
14+
if(this.get('runmode')){
15+
this.set('interaction.model',this.get('tutorialService.activeStep'));
16+
}else{
17+
this.set('interaction.model',this.get('interactionModel'));
18+
}
19+
this.set('interaction.completed',this.get('completed'));
20+
this.set('interaction.runmode',this.get('runmode'));
21+
this.get('interaction').on('singleClick', this.get('clickListenerSingle'));
22+
this.get('interaction').on('doubleClick', this.get('clickListenerDouble'));
23+
},
24+
cleanup(){
25+
this._super(...arguments);
26+
this.get('interaction').off('singleClick',this, this.clickListenerSingle);
27+
this.get('interaction').off('doubleClick',this, this.clickListenerDouble);
28+
},
29+
willDestroyElement(){
30+
this._super(...arguments);
31+
this.get('interaction').off('singleClick',this, this.clickListenerSingle);
32+
this.get('interaction').off('doubleClick',this, this.clickListenerDouble);
33+
},
34+
clickListenerSingle(emberModel){
35+
if(emberModel!=undefined){
36+
if(this.get('selectTarget')){
37+
this.set("model.targetType",emberModel.get('constructor.modelName'));
38+
this.set("model.targetId",emberModel.get("id"));
39+
this.set("model.actionType","singleClick");
40+
this.set('selectTarget',false);
41+
this.showAlertifyMessage(`Target selected 'single click' on '`+emberModel.get('constructor.modelName')+"' with name '"+emberModel.get('name')+"'");
42+
}else{
43+
if(this.get("model.targetType")==emberModel.get('constructor.modelName') && this.get("model.targetId")==emberModel.get("id")&& this.get('model.actionType')=="singleClick"){
44+
if(this.get("runmode")){
45+
this.completed(this.get('model'));
46+
}
47+
}
48+
}
49+
}
50+
},
51+
clickListenerDouble(emberModel){
52+
if(emberModel!=undefined){
53+
if(this.get('selectTarget')){
54+
this.set("model.targetType",emberModel.get('constructor.modelName'));
55+
this.set("model.targetId",emberModel.get("id"));
56+
this.set("model.actionType","doubleClick");
57+
this.set('selectTarget',false);
58+
this.showAlertifyMessage(`Target selected 'double click' on '`+emberModel.get('constructor.modelName')+"'");
59+
}else{
60+
if(this.get("model.targetType")==emberModel.get('constructor.modelName') && this.get("model.targetId")==emberModel.get("id")&& this.get('model.actionType')=="doubleClick"){
61+
if(this.get("runmode")){
62+
this.completed(this.get('model'));
63+
}
64+
}
65+
}
66+
}
67+
},
68+
completed(laststep){
69+
if(this.get('runmode')){
70+
var step = this.get('tutorialService').getNextStep(laststep);
71+
if(step){
72+
this.get('tutorialService').getSequence(step).then((sequence)=>{
73+
if(sequence.get('landscapeTimestamp')!=undefined){
74+
this.get('landscapeService').loadLandscape(sequence);
75+
}else{
76+
this.get('tutorialService').getTutorial(sequence).then((tutorial)=>{
77+
if(tutorial.get('landscapeTimestamp')!=undefined){
78+
this.get('landscapeService').loadLandscape(tutorial);
79+
}else{
80+
console.log("no landscape defined");
81+
}
82+
});
83+
}
84+
});
85+
this.get('tutorialService').set('activeStep',step);
86+
this.set('model',step);
87+
}else{
88+
this.showAlertifyMessage(`Last step completed.`);
89+
}
90+
}
91+
}
92+
});

0 commit comments

Comments
 (0)