diff --git a/package-lock.json b/package-lock.json index a8248606..b00ce7e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,16 +10,18 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.15.4", "@types/minimatch": "^3.0.5", - "ag-client-typescript": "2.6.0", + "ag-client-typescript": "2.8.0", "chart.js": "^3.9.1", "chartjs-adapter-moment": "^1.0.1", "chartjs-plugin-zoom": "^1.2.1", + "dompurify": "^3.1.6", "file-saver": "^2.0.5", "highlight.js": "^11.9.0", "lodash": "^4.17.21", "minimatch": "^3.1.2", "moment": "^2.29.4", "moment-timezone": "^0.5.43", + "showdown": "^2.1.0", "vue": "^2.7.14", "vue-class-component": "^7.2.6", "vue-property-decorator": "^8.5.1", @@ -28,9 +30,11 @@ }, "devDependencies": { "@testing-library/jest-dom": "^5.11.9", + "@types/dompurify": "^3.0.5", "@types/file-saver": "^2.0.1", "@types/jest": "^25.2.3", "@types/lodash": "^4.14.168", + "@types/showdown": "^2.0.6", "@types/sinon": "^7.5.2", "@vue/cli-plugin-typescript": "^4.5.11", "@vue/cli-plugin-unit-jest": "^4.5.11", @@ -2193,6 +2197,15 @@ "@types/node": "*" } }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "dependencies": { + "@types/trusted-types": "*" + } + }, "node_modules/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -2385,6 +2398,12 @@ "@types/node": "*" } }, + "node_modules/@types/showdown": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/showdown/-/showdown-2.0.6.tgz", + "integrity": "sha512-pTvD/0CIeqe4x23+YJWlX2gArHa8G0J0Oh6GKaVXV7TAeickpkkZiNOgFcFcmLQ5lB/K0qBJL1FtRYltBfbGCQ==", + "dev": true + }, "node_modules/@types/sinon": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.2.tgz", @@ -2430,6 +2449,12 @@ "@types/jest": "*" } }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true + }, "node_modules/@types/uglify-js": { "version": "3.17.1", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", @@ -4736,9 +4761,9 @@ } }, "node_modules/ag-client-typescript": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ag-client-typescript/-/ag-client-typescript-2.6.0.tgz", - "integrity": "sha512-6WLbPhHISELCVC9hcTJzkKZnVbKJ8wM4ICif2s4O5TxSz5jc5/7GCnyzfEhrLn1NyCGCedppswK1uiLUkxm6jA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/ag-client-typescript/-/ag-client-typescript-2.8.0.tgz", + "integrity": "sha512-U6wLZAJ28s6elwOJItU1Mk/1He1L6hRd1Oj37LmmlsJV/8Juk/HP5S9iRUwYVUXJo3GT80nH4HzO69x6liYQNw==", "dependencies": { "axios": "^0.21.1" } @@ -8203,6 +8228,11 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz", + "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==" + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -18421,6 +18451,29 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, + "node_modules/showdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/showdown/-/showdown-2.1.0.tgz", + "integrity": "sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==", + "dependencies": { + "commander": "^9.0.0" + }, + "bin": { + "showdown": "bin/showdown.js" + }, + "funding": { + "type": "individual", + "url": "https://www.paypal.me/tiviesantos" + } + }, + "node_modules/showdown/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", diff --git a/package.json b/package.json index 566a18b0..892d8c91 100644 --- a/package.json +++ b/package.json @@ -11,16 +11,18 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.15.4", "@types/minimatch": "^3.0.5", - "ag-client-typescript": "2.6.0", + "ag-client-typescript": "2.8.0", "chart.js": "^3.9.1", "chartjs-adapter-moment": "^1.0.1", "chartjs-plugin-zoom": "^1.2.1", + "dompurify": "^3.1.6", "file-saver": "^2.0.5", "highlight.js": "^11.9.0", "lodash": "^4.17.21", "minimatch": "^3.1.2", "moment": "^2.29.4", "moment-timezone": "^0.5.43", + "showdown": "^2.1.0", "vue": "^2.7.14", "vue-class-component": "^7.2.6", "vue-property-decorator": "^8.5.1", @@ -29,9 +31,11 @@ }, "devDependencies": { "@testing-library/jest-dom": "^5.11.9", + "@types/dompurify": "^3.0.5", "@types/file-saver": "^2.0.1", "@types/jest": "^25.2.3", "@types/lodash": "^4.14.168", + "@types/showdown": "^2.0.6", "@types/sinon": "^7.5.2", "@vue/cli-plugin-typescript": "^4.5.11", "@vue/cli-plugin-unit-jest": "^4.5.11", diff --git a/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue b/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue index 47f78059..88ae2ec1 100644 --- a/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue +++ b/src/components/project_admin/ag_tests/ag_test_case_fdbk_config_panel.vue @@ -16,6 +16,17 @@ +
+ +
+
+ +
+ + + + + + + + + + + + + + + +
diff --git a/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue b/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue index 270978cc..14c68918 100644 --- a/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue +++ b/src/components/project_admin/ag_tests/ag_test_command_advanced_fdbk_settings.vue @@ -13,6 +13,17 @@ +
+ +
+
diff --git a/src/components/project_admin/ag_tests/ag_test_command_settings.vue b/src/components/project_admin/ag_tests/ag_test_command_settings.vue index 1f432b97..726fa012 100644 --- a/src/components/project_admin/ag_tests/ag_test_command_settings.vue +++ b/src/components/project_admin/ag_tests/ag_test_command_settings.vue @@ -62,6 +62,54 @@
+
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
Stdin
@@ -716,7 +764,8 @@ export default class AGTestCommandSettings extends Vue { show_actual_return_code: true, show_actual_stdout: true, show_actual_stderr: true, - show_whether_timed_out: true + show_whether_timed_out: true, + show_student_description: true, }; } else { diff --git a/src/components/project_admin/ag_tests/ag_test_suite_advanced_fdbk_settings.vue b/src/components/project_admin/ag_tests/ag_test_suite_advanced_fdbk_settings.vue index c44c6f1a..f9ce2515 100644 --- a/src/components/project_admin/ag_tests/ag_test_suite_advanced_fdbk_settings.vue +++ b/src/components/project_admin/ag_tests/ag_test_suite_advanced_fdbk_settings.vue @@ -13,6 +13,17 @@ Suite is Visible
+ +
+ +
diff --git a/src/components/project_admin/ag_tests/ag_test_suite_settings.vue b/src/components/project_admin/ag_tests/ag_test_suite_settings.vue index cedeae4f..03ece2d7 100644 --- a/src/components/project_admin/ag_tests/ag_test_suite_settings.vue +++ b/src/components/project_admin/ag_tests/ag_test_suite_settings.vue @@ -13,6 +13,30 @@ :docker_images="d_docker_images" @field_change="Object.assign(d_ag_test_suite, $event)"> +
+ + +
+ +
+ + +
+ +
+ + +
+
Setup diff --git a/src/components/project_view/submission_detail/ag_test_case_result_detail.vue b/src/components/project_view/submission_detail/ag_test_case_result_detail.vue index 1fe529a0..31f93d47 100644 --- a/src/components/project_view/submission_detail/ag_test_case_result_detail.vue +++ b/src/components/project_view/submission_detail/ag_test_case_result_detail.vue @@ -1,6 +1,20 @@