diff --git a/angular.json b/angular.json index eb64c9116997cfeb5010547ce0974c8c2483dfa3..4cb55b4d0412e46951a8a9e9f6a54cee4856e26f 100644 --- a/angular.json +++ b/angular.json @@ -54,6 +54,20 @@ "extractLicenses": true, "vendorChunk": false, "buildOptimizer": true + }, + "local": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.local.ts" + } + ] } }, "defaultConfiguration": "" @@ -66,6 +80,9 @@ "configurations": { "production": { "browserTarget": "kypo2-trainings-visualization-overview:build:production" + }, + "local": { + "browserTarget": "kypo2-trainings-visualization-overview:build:local" } } }, diff --git a/src/environments/environment.local.ts b/src/environments/environment.local.ts new file mode 100644 index 0000000000000000000000000000000000000000..aef9318fe88c308e5451fe9bbe11953f804ee5e9 --- /dev/null +++ b/src/environments/environment.local.ts @@ -0,0 +1,59 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +const HOME_URL = 'https://localhost:4200' + +export const environment = { + production: false, + trainingServiceUrl: 'http://localhost:3000/kypo2-rest-training/api/v1/', + elasticSearchServiceUrl: 'http://172.19.0.22/kypo-elasticsearch-service/api/v1/', + // OIDC SETTINGS + // Url of the Identity Provider + issuer: 'https://oidc.muni.cz/oidc/', + // URL of the SPA to redirect the user after silent refresh + silentRefreshRedirectUri: HOME_URL, + // URL of the SPA to redirect the user to after login + redirectUri: HOME_URL, + // The SPA's id. The SPA is registered with this id at the config-server + clientId: 'b53f2660-8fa0-4d32-94e4-23a59d7e7077', + // set the scope for the permissions the client should request + scope: 'openid profile email', + sessionChecksEnabled: false, + authConfig: { + guardMainPageRedirect: 'visualization', + guardLoginPageRedirect: 'login', + interceptorAllowedUrls: [ + 'https://172.19.0.22', + 'http://localhost', + 'https://localhost' + ], + authorizationStrategyConfig: { + authorizationUrl: 'https://172.19.0.22/kypo2-rest-user-and-group/api/v1/users/info' + }, + providers: [ + { + label: 'Login with MUNI', + textColor: 'white', + backgroundColor: '#002776', + oidcConfig: { + issuer: 'https://172.19.0.22:8443/csirtmu-dummy-issuer-server/', + clientId: '0bf33f00-2700-4efb-ab09-186076f85c7d', + redirectUri: HOME_URL, + scope: 'openid email profile', + logoutUrl: 'https://172.19.0.22/csirtmu-dummy-issuer-server/endsession', + postLogoutRedirectUri: HOME_URL, + clearHashAfterLogin: true + }, + }, + ] + }, +}; + +/* + * In development mode, to ignore zone related error stack frames such as + * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can + * import the following file, but please comment it out in production mode + * because it will have performance impact when throw error + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/utils/json-server/db.js b/utils/json-server/db.js new file mode 100644 index 0000000000000000000000000000000000000000..91ddc772366de67dc31807271ab1c884fa8b48cf --- /dev/null +++ b/utils/json-server/db.js @@ -0,0 +1,809 @@ +module.exports = function() { + return { + clustering: { + final_results: { + estimated_time: 2700000, + max_participant_score: 230, + max_participant_game_score: 30, + max_participant_assessment_score: 200, + max_participant_time: 2635498, + average_time: 2635498, + average_score: 240, + average_game_score: 40, + average_assessment_score: 200, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 2635498, + game_score: 30, + assessment_score: 200, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 2635498, + game_score: 50, + assessment_score: 200, + finished: true, + }, + ], + }, + levels: [ + { + id: 40, + order: 0, + level_type: 'INFO_LEVEL', + title: 'Info', + estimated_time: 0, + max_participant_score: 0, + max_participant_time: 4329, + average_time: 4329, + average_score: 0, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 2635498, + participant_level_score: 30, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 2635498, + participant_level_score: 50, + finished: true, + }, + ], + }, + { + id: 41, + order: 1, + level_type: 'GAME_LEVEL', + title: 'Finding open ports', + estimated_time: 600000, + max_participant_score: 30, + max_participant_time: 763290, + average_time: 763290, + average_score: 30, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 763290, + participant_level_score: 30, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 763290, + participant_level_score: 50, + finished: true, + }, + ], + }, + { + id: 42, + order: 2, + level_type: 'GAME_LEVEL', + title: 'Connecting via Telnet', + estimated_time: 600000, + max_participant_score: 0, + max_participant_time: 758743, + average_time: 758743, + average_score: 0, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 758743, + participant_level_score: 0, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 758743, + participant_level_score: 0, + finished: true, + }, + ], + }, + { + id: 43, + order: 3, + level_type: 'GAME_LEVEL', + title: 'Privilege Escalation', + estimated_time: 900000, + max_participant_score: 0, + max_participant_time: 1081137, + average_time: 1081137, + average_score: 0, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 1081137, + participant_level_score: 0, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 1081137, + participant_level_score: 0, + finished: true, + }, + ], + }, + { + id: 44, + order: 4, + level_type: 'ASSESSMENT_LEVEL', + title: 'Test Example', + estimated_time: 300000, + max_participant_score: 200, + max_participant_time: 20202, + average_time: 20202, + average_score: 200, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 20202, + participant_level_score: 200, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 20202, + participant_level_score: 200, + finished: true, + }, + ], + }, + { + id: 45, + order: 5, + level_type: 'ASSESSMENT_LEVEL', + title: 'Assessment Example', + estimated_time: 300000, + max_participant_score: 0, + max_participant_time: 7610, + average_time: 7610, + average_score: 0, + player_data: [ + { + id: 1, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 1, + training_time: 7610, + participant_level_score: 0, + finished: true, + }, + { + id: 2, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#100975', + training_run_id: 2, + training_time: 7610, + participant_level_score: 0, + finished: true, + }, + ], + }, + ] + }, + table: [ + { + id: 1, + name: 'John', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#243165', + training_run_id: 1, + training_time: 2635498, + game_score: 30, + assessment_score: 200, + finished: true, + checked: false, + levels: [ + { + id: 40, + level_type: 'INFO_LEVEL', + order: 0, + participant_level_score: 0, + }, + { + id: 41, + order: 1, + level_type: 'GAME_LEVEL', + wrong_flags: 1, + hints_taken: 1, + participant_level_score: 30, + }, + { + id: 42, + order: 2, + level_type: 'GAME_LEVEL', + wrong_flags: 1, + hints_taken: 2, + participant_level_score: 0, + }, + { + id: 43, + order: 3, + level_type: 'GAME_LEVEL', + wrong_flags: 4, + hints_taken: 1, + participant_level_score: 0, + }, + { + id: 44, + order: 4, + level_type: 'ASSESSMENT_LEVEL', + participant_level_score: 200, + }, + { + id: 45, + order: 5, + level_type: 'ASSESSMENT_LEVEL', + participant_level_score: 0, + }, + ], + }, + { + id: 2, + name: 'Jane', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#643165', + training_run_id: 2, + training_time: 2635498, + game_score: 30, + assessment_score: 200, + finished: true, + checked: false, + levels: [ + { + id: 40, + level_type: 'INFO_LEVEL', + order: 0, + participant_level_score: 0, + }, + { + id: 41, + order: 1, + level_type: 'GAME_LEVEL', + wrong_flags: 1, + hints_taken: 1, + participant_level_score: 30, + }, + { + id: 42, + order: 2, + level_type: 'GAME_LEVEL', + wrong_flags: 1, + hints_taken: 2, + participant_level_score: 0, + }, + { + id: 43, + order: 3, + level_type: 'GAME_LEVEL', + wrong_flags: 4, + hints_taken: 1, + participant_level_score: 0, + }, + { + id: 44, + order: 4, + level_type: 'ASSESSMENT_LEVEL', + participant_level_score: 200, + }, + { + id: 45, + order: 5, + level_type: 'ASSESSMENT_LEVEL', + participant_level_score: 0, + }, + ], + }, + ], + timeline: { + estimated_time: 2700000000, + max_score_of_levels: [0, 50, 100, 100, 300, 0], + max_participant_time: 2635498, + average_time: 2635498, + player_data: [ + { + id: 1, + name: 'John doe', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#456233', + training_run_id: 1, + training_time: 2635498, + game_score: 30, + assessment_score: 200, + levels: [ + { + id: 40, + order: 0, + level_type: 'INFO_LEVEL', + start_time: 0, + participant_level_score: 0, + events: [ + { + text: 'Training run 1 started', + time: 0, + score: 0, + }, + { + text: 'Level 0 started', + time: 150, + score: 0, + }, + { + text: 'Level 0 completed', + time: 4329, + score: 0, + }, + ], + }, + { + id: 41, + order: 1, + level_type: 'GAME_LEVEL', + solution_displayed_time: 0, + correct_flag_time: 76762, + start_time: 4333, + participant_level_score: 30, + events: [ + { + text: 'Level 1 started', + time: 4333, + score: 50, + }, + { + text: "Hint 'Tool to find open ports' taken.", + time: 325602, + score: 30, + }, + { + text: 'Wrong flag submitted.', + time: 448468, + score: 30, + }, + { + text: 'Correct flag submitted.', + time: 76762, + levelOrder: 1, + }, + { + text: 'Level 1 completed.', + score: 30, + time: 767623, + }, + ], + }, + { + id: 42, + order: 2, + level_type: 'GAME_LEVEL', + solution_displayed_time: 1502785, + correct_flag_time: 1526435, + start_time: 767693, + participant_level_score: 0, + events: [ + { + text: 'Level 2 started', + time: 767693, + score: 130, + }, + { + text: "Hint 'Tool for password attacks' taken.", + time: 953496, + score: 110, + }, + { + text: "Hint 'Connecting using telnet' taken.", + score: 100, + time: 1246389, + }, + { + text: 'Solution displayed', + time: 1502785, + score: 30, + }, + { + text: 'Wrong flag submitted.', + score: 30, + time: 1517459, + }, + { + text: 'Correct flag submitted.', + score: 30, + time: 1526435, + }, + { + text: 'Level 2 completed.', + score: 30, + time: 1526436, + }, + ], + }, + { + id: 43, + order: 3, + level_type: 'GAME_LEVEL', + solution_displayed_time: 2593857, + correct_flag_time: 2607616, + start_time: 152648, + participant_level_score: 0, + events: [ + { + text: 'Level 3 started', + time: 1526480, + score: 130, + }, + { + text: "Hint 'Using the privilege escalation' taken.", + time: 1973734, + score: 70, + }, + { + text: 'Wrong flag submitted.', + score: 70, + time: 2476713, + }, + { + text: 'Wrong flag submitted.', + score: 70, + time: 2489708, + }, + { + text: 'Wrong flag submitted.', + score: 70, + time: 2498401, + }, + { + text: 'Solution displayed', + time: 2593857, + score: 30, + }, + { + text: 'Wrong flag submitted.', + score: 30, + time: 2599967, + }, + { + text: 'Correct flag submitted.', + score: 30, + time: 2607616, + }, + { + text: 'Level 3 completed.', + score: 30, + time: 2607617, + }, + ], + }, + { + id: 44, + order: 4, + level_type: 'ASSESSMENT_LEVEL', + start_time: 2607652, + participant_level_score: 200, + assessment_type: 'TEST_ASSESSMENT', + events: [ + { + text: 'Level 4 started', + time: 2607652, + score: 330, + }, + { + text: 'Assessment answered.', + time: 2627852, + score: 230, + }, + { + text: 'Level 4 completed.', + time: 2627854, + score: 230, + }, + ], + }, + { + id: 45, + order: 5, + level_type: 'ASSESSMENT_LEVEL', + start_time: 2627888, + participant_level_score: 0, + assessment_type: 'QUESTIONNAIRE', + events: [ + { + text: 'Level 5 started', + time: 2627888, + score: 230, + }, + { + text: 'Assessment answered.', + time: 2635462, + score: 230, + }, + { + text: 'Level 5 completed.', + time: 2635464, + score: 230, + }, + ], + }, + ], + }, + { + id: 2, + name: 'Jane doe', + picture: + 'iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAACIUlEQVR4Xu3Ysa3YQAwFQbfknuz+S/jOl2AwVnQAg0keoAUv1a+fn59f/+vP778/r+kbxBhED3lB3yDGIHrIC/oGMQbRQ17QN4gxiB7ygr5BjEH0kBf0DWIMooe8oG8QYxA95AV9gxiD6CEv6BvEGEQPeUHfIMYgesgL+gYxBtFDXtA3iDGIHvKCvkGMQfSQF/QNYgyih7ygbxBjOLsxnN0Yzm4MZzeGsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsPv2Taky0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3Rlvj0cQ8RbYm2RFvi08c9RLQl2hJtiU8f9xDRlmhLtCU+fdxDRFuiLdGW+PRxDxFtibZEW+LTxz1EtCXaEm2JTx/3ENGWaEu0JT593ENEW6It0Zb49HEPEW2JtkRb4tPHPUS0JdoSbYlPH/cQ0ZZoS7QlPn3cQ0Rboi3RlhixsxvD2Y3h7MZwdmM4uzGc3RjObgxnN4azG8PZjeHsxnB2Yzi7MZzdGM5uDKL/e0Rboi3RlhiD6CGiLdGWaEuMQfQQ0ZZoS7QlxiB6iGhLtCXaEmMQPUS0JdoSbYkxiB4i2hJtibbEGEQPEW2JtkRbYgyih4i2RFuiLTEG0UNEW6It0ZYYg+ghoi3RlmhLjEH0ENGWaEu0JcYgeohoS7Ql2hJjED1EtCXaEm2JMYgeItoSbYm2xBhEDxFtibZEW+IfusaIXHtR21cAAAAASUVORK5CYII=', + avatar_color: '#638273', + training_run_id: 2, + training_time: 2635498, + game_score: 150, + assessment_score: 150, + levels: [ + { + id: 40, + order: 0, + level_type: 'INFO_LEVEL', + start_time: 0, + participant_level_score: 0, + events: [ + { + text: 'Training run 1 started', + time: 0, + score: 0, + }, + { + text: 'Level 0 started', + time: 150, + score: 0, + }, + { + text: 'Level 0 completed', + time: 4329, + score: 0, + }, + ], + }, + { + id: 41, + order: 1, + level_type: 'GAME_LEVEL', + solution_displayed_time: 0, + correct_flag_time: 76762, + start_time: 4333, + participant_level_score: 50, + events: [ + { + text: 'Level 1 started', + time: 4333, + score: 50, + }, + { + text: 'Wrong flag submitted.', + time: 448468, + score: 50, + }, + { + text: 'Correct flag submitted.', + time: 767620, + levelOrder: 1, + }, + { + text: 'Level 1 completed.', + score: 50, + time: 767623, + }, + ], + }, + { + id: 42, + order: 2, + level_type: 'GAME_LEVEL', + solution_displayed_time: 1502785, + correct_flag_time: 1526435, + start_time: 767693, + participant_level_score: 0, + events: [ + { + text: 'Level 2 started', + time: 767693, + score: 130, + }, + { + text: "Hint 'Tool for password attacks' taken.", + time: 953496, + score: 110, + }, + { + text: "Hint 'Connecting using telnet' taken.", + score: 100, + time: 1246389, + }, + { + text: 'Solution displayed', + time: 1502785, + score: 30, + }, + { + text: 'Wrong flag submitted.', + score: 30, + time: 1517459, + }, + { + text: 'Correct flag submitted.', + score: 30, + time: 1526435, + }, + { + text: 'Level 2 completed.', + score: 30, + time: 1526436, + }, + ], + }, + { + id: 43, + order: 3, + level_type: 'GAME_LEVEL', + solution_displayed_time: 2593857, + correct_flag_time: 2607616, + start_time: 152648, + participant_level_score: 100, + events: [ + { + text: 'Level 3 started', + time: 1526480, + score: 150, + }, + { + text: 'Wrong flag submitted.', + score: 150, + time: 2476713, + }, + { + text: 'Solution displayed', + time: 2593857, + score: 150, + }, + { + text: 'Wrong flag submitted.', + score: 150, + time: 2599967, + }, + { + text: 'Correct flag submitted.', + score: 150, + time: 2607616, + }, + { + text: 'Level 3 completed.', + score: 150, + time: 2607617, + }, + ], + }, + { + id: 44, + order: 4, + level_type: 'ASSESSMENT_LEVEL', + start_time: 2607652, + participant_level_score: 200, + assessment_type: 'TEST_ASSESSMENT', + events: [ + { + text: 'Level 4 started', + time: 2607652, + score: 330, + }, + { + text: 'Assessment answered.', + time: 2627852, + score: 230, + }, + { + text: 'Level 4 completed.', + time: 2627854, + score: 230, + }, + ], + }, + { + id: 45, + order: 5, + level_type: 'ASSESSMENT_LEVEL', + start_time: 2627888, + participant_level_score: 0, + assessment_type: 'QUESTIONNAIRE', + events: [ + { + text: 'Level 5 started', + time: 2627888, + score: 230, + }, + { + text: 'Assessment answered.', + time: 2635462, + score: 230, + }, + { + text: 'Level 5 completed.', + time: 2635464, + score: 230, + }, + ], + }, + ], + }, + ], + }, + }; +}; diff --git a/utils/json-server/routes.json b/utils/json-server/routes.json new file mode 100644 index 0000000000000000000000000000000000000000..b0b2af174daac00a07dd7cbb147236302b59cbde --- /dev/null +++ b/utils/json-server/routes.json @@ -0,0 +1,5 @@ +{ + "/kypo2-rest-training/api/v1/visualizations/training-instances/:id/clustering": "/clustering", + "/kypo2-rest-training/api/v1/visualizations/training-instances/:id/table": "/table", + "/kypo2-rest-training/api/v1/visualizations/training-instances/:id/timeline": "/timeline" +} diff --git a/utils/json-server/server.js b/utils/json-server/server.js new file mode 100644 index 0000000000000000000000000000000000000000..b35ed41c8b3938c77908f24cc7129c79cde17349 --- /dev/null +++ b/utils/json-server/server.js @@ -0,0 +1,12 @@ +module.exports = (req, res, next) => { + if ( + req.method === "POST" || + req.method === "PUT" || + req.method === "DELETE" || + req.method === "PATCH" + ) { + req.method = "GET"; + req.query = req.body; + } + next(); +};