diff --git a/.gitignore b/.gitignore index e9ce6cfd098cd6f419bb3c63bbc5af0ff2c9d161..d819a569e0f9775182ffe5af4c29aa63d56a6f43 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ SAS/TMSS/frontend/tmss_webapp/.vs/* SAS/TMSS/.vs/* SAS/TMSS/.vs/slnx.sqlite SAS/TMSS/frontend/tmss_webapp/.vscode/launch.json +SAS/TMSS/frontend/tmss_webapp/junit.xml diff --git a/Docker/lofar-ci/Dockerfile_ci_tmss b/Docker/lofar-ci/Dockerfile_ci_tmss index d790158ee92d9c3b03d0c912c99a459a808d989e..89346f140674cb21dbb2873bca291bd2d3b57247 100644 --- a/Docker/lofar-ci/Dockerfile_ci_tmss +++ b/Docker/lofar-ci/Dockerfile_ci_tmss @@ -38,7 +38,7 @@ RUN pip3 install astroplan cachetools comet coreapi coverage cx_Oracle cython dj -r tmss_lobster.txt -r tmss_ingest_tmss_adapter.txt -r tmss_scheduling.txt \ -r tmss_slack_webhook.txt -r tmss_websocket.txt \ -c tmss_constraints.txt --ignore-installed -RUN echo "This string is here to prevent Docker caching. It is 10 m on Nov 28, 2023." +RUN echo "This string is here to prevent Docker caching. It is late on Dec 1, 2023." # Download and import the Nodesource GPG key - Requires curl (already installed by base) @@ -57,7 +57,7 @@ RUN echo "NPM Version..." RUN npm -v RUN echo "NodeJs Version.." RUN node -v -RUN npm install -g npm@10.2.1 +RUN npm install -g npm@10.2.4 RUN echo "NPM Version. now.." RUN npm -v diff --git a/SAS/TMSS/frontend/tmss_webapp/CMakeLists.txt b/SAS/TMSS/frontend/tmss_webapp/CMakeLists.txt index cbbc9a43e3a0273a320e13cfb656822438a78ca3..4483cde248dcc348c2bc84b0799ce06aabb87ac9 100644 --- a/SAS/TMSS/frontend/tmss_webapp/CMakeLists.txt +++ b/SAS/TMSS/frontend/tmss_webapp/CMakeLists.txt @@ -2,6 +2,7 @@ include(NPMInstall) file(COPY package-lock.json DESTINATION DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY prepareTemplateSchemas.js DESTINATION DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) +file(COPY prepareTemplateCore.js DESTINATION DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY cleanTemplateSchemas.js DESTINATION DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) file(COPY patches DESTINATION DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) npm_install(package.json PUBLIC public SOURCE src DESTINATION ${PYTHON_INSTALL_DIR}/lofar/sas/tmss/frontend/tmss_webapp/build) diff --git a/SAS/TMSS/frontend/tmss_webapp/package-lock.json b/SAS/TMSS/frontend/tmss_webapp/package-lock.json index 3b281ca9ec3665678a250257f8f469d4ac3168e3..2a51aff728a9a38af5d0de8d2d2b104ad61a4dca 100644 --- a/SAS/TMSS/frontend/tmss_webapp/package-lock.json +++ b/SAS/TMSS/frontend/tmss_webapp/package-lock.json @@ -12,17 +12,17 @@ "dependencies": { "@kevincobain2000/json-to-html-table": "^1.0.4", "react-redux": "^7.2.4", - "html2canvas": "^1.0.0-rc.7", + "html2canvas": "^1.4.1", "cleave.js": "^1.6.0", - "katex": "^0.12.0", + "katex": "^0.16.9", "react-bootstrap-datetimepicker": "0.0.22", "match-sorter": "^4.2.1", "react-tooltip": "^4.5.1", - "axios": "^1.6.0", + "axios": "^1.6.2", "@microlink/react-json-view": "^1.23.0", "immer": "^10.0.3", "jspdf": "^2.5.1", - "interactjs": "^1.10.19", + "interactjs": "^1.10.23", "primereact": "9.6.2", "bootstrap": "^4.5.0", "use-axios": "^1.0.0", @@ -30,16 +30,16 @@ "react-chartjs-2": "^5.2.0", "redux": "^4.2.1", "flatpickr": "^4.6.13", - "reactstrap": "^9.2.0", + "reactstrap": "^9.2.1", "react-websocket": "^2.1.0", - "jspdf-autotable": "^3.7.0", - "react-flatpickr": "^3.10.12", + "jspdf-autotable": "^3.7.1", + "react-flatpickr": "^3.10.13", "react-bootstrap": "^1.0.1", "react-leaflet": "^4.2.1", "chart.js": "^4.4.0", "react-use-websocket": "^4.5.0", "react-leaflet-cluster": "^2.1.0", - "react-to-print": "^2.12.4", + "react-to-print": "^2.14.15", "moment": "^2.29.4", "typescript": "^3.9.5", "react-dom": "^18.2.0", @@ -48,7 +48,7 @@ "leaflet": "^1.9.4", "ag-grid-community": "^24.1.0", "sass": "^1.69.5", - "npm-check-updates": "^16.14.6", + "npm-check-updates": "^16.14.11", "font-awesome": "^4.7.0", "shortcut-buttons-flatpickr": "^0.4.0", "json-schema-ref-parser": "^1.0.0-alpha.21", @@ -59,12 +59,12 @@ "primeflex": "^3.3.1", "ag-grid-react": "^24.1.1", "react-moment": "^1.1.3", - "suneditor": "^2.36.5", + "suneditor": "^2.45.1", "react-frame-component": "^4.1.2", "primeicons": "6.0.1", "react-transition-group": "^2.5.1", - "react-beforeunload": "^2.4.0", - "react-table": "^7.2.1", + "react-beforeunload": "^2.6.0", + "react-table": "^7.8.0", "react-app-polyfill": "^1.0.6", "yup": "^1.2.0", "styled-components": "^5.1.1", @@ -75,18 +75,18 @@ "chartjs-plugin-annotation": "^3.0.1", "react": "^18.2.0", "jquery": "^3.7.1", - "@json-editor/json-editor": "^2.11.0", + "@json-editor/json-editor": "^2.12.0", "node-polyfill-webpack-plugin": "^2.0.1", "react-calendar-timeline": "^0.28.0", "react-loader-spinner": "^5.4.5", "react-table-plugins": "^1.3.4", "@fortawesome/fontawesome-free": "^5.13.1", - "react-live-clock": "^6.1.14", - "prop-types": "^15.7.2", - "puppeteer": "^21.4.1" + "react-live-clock": "^6.1.18", + "prop-types": "^15.8.1", + "puppeteer": "^21.5.2" }, "devDependencies": { - "eslint": "^8.52.0", + "eslint": "^8.55.0", "react-scripts": "^5.0.1", "jest-mock-console": "^2.0.0", "@testing-library/user-event": "^14.5.1", @@ -94,21 +94,22 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", "jest-junit": "^16.0.0", "@babel/plugin-transform-private-property-in-object": "7.22.11", - "@testing-library/react": "^14.0.0", + "@testing-library/react": "^14.1.2", "eslint-plugin-react": "^7.33.2", - "@babel/preset-env": "^7.23.2", - "@types/jest": "^29.5.6", + "@babel/preset-env": "^7.23.5", + "axios-mock-adapter": "^1.22.0", + "@types/jest": "^29.5.10", "babel-polyfill": "^6.26.0", "ajv": "^8.12.0", "jest-expect-message": "^1.1.3", - "@testing-library/jest-dom": "^6.1.4", + "@testing-library/jest-dom": "^6.1.5", "@types/react-router-dom": "^5.3.3", "jest-canvas-mock": "^2.5.2", "react-app-rewired": "^2.2.1", "customize-cra": "^1.0.0", - "eslint-formatter-gitlab": "^5.0.0", + "eslint-formatter-gitlab": "^5.1.0", "react-test-renderer": "^18.2.0", - "jest-editor-support": "^31.1.1" + "jest-editor-support": "^31.1.2" } }, "node_modules/argparse": { @@ -1204,6 +1205,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, "node_modules/unpipe": { @@ -2804,9 +2806,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001563", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", + "version": "1.0.30001565", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", + "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", "funding": [ { "type": "opencollective", @@ -2823,9 +2825,9 @@ ] }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "ignore": "^5.2.0", @@ -2843,7 +2845,7 @@ "@ungap/structured-clone": "^1.2.0", "imurmurhash": "^0.1.4", "cross-spawn": "^7.0.2", - "@eslint/eslintrc": "^2.1.3", + "@eslint/eslintrc": "^2.1.4", "graphemer": "^1.4.0", "is-path-inside": "^3.0.3", "@nodelib/fs.walk": "^1.2.8", @@ -2865,7 +2867,7 @@ "find-up": "^5.0.0", "optionator": "^0.9.3", "escape-string-regexp": "^4.0.0", - "@eslint/js": "8.54.0" + "@eslint/js": "8.55.0" }, "bin": { "eslint": "bin/eslint.js" @@ -4000,9 +4002,9 @@ } }, "node_modules/@types/scheduler": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.7.tgz", - "integrity": "sha512-8g25Nl3AuB1KulTlSUsUhUo/oBgBU6XIXQ+XURpeioEbEJvkO7qI4vDfREv3vJYHHzqXjcAHvoJy4pTtSQNZtA==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/string-width-cjs": { "name": "string-width", @@ -5034,15 +5036,6 @@ "node": ">=10" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -5899,9 +5892,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -5953,9 +5946,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } @@ -6811,14 +6804,14 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.589", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.589.tgz", - "integrity": "sha512-zF6y5v/YfoFIgwf2dDfAqVlPPsyQeWNpEWXbAlDUS8Ax4Z2VoiiZpAPC0Jm9hXEkJm2vIZpwB6rc4KnLTQffbQ==" + "version": "1.4.601", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", + "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==" }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -6943,9 +6936,9 @@ } }, "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -7286,6 +7279,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", @@ -7891,9 +7907,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -8056,9 +8072,12 @@ } }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } }, "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { "version": "27.5.1", @@ -10575,9 +10594,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", @@ -10635,9 +10654,9 @@ "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" }, "node_modules/react-use": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.4.0.tgz", - "integrity": "sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==", + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/react-use/-/react-use-17.4.2.tgz", + "integrity": "sha512-1jPtmWLD8OJJNYCdYLJEH/HM+bPDfJuyGwCYeJFgPmWY8ttwpgZnW5QnzgM55CYUByUiTjHxsGOnEpLl6yQaoQ==", "dependencies": { "@types/js-cookie": "^2.2.6", "@xobotyi/scrollbar-width": "^1.9.5", @@ -10645,7 +10664,7 @@ "fast-deep-equal": "^3.1.3", "fast-shallow-equal": "^1.0.0", "js-cookie": "^2.2.1", - "nano-css": "^5.3.1", + "nano-css": "^5.6.1", "react-universal-interface": "^0.6.2", "resize-observer-polyfill": "^1.5.1", "screenfull": "^5.1.0", @@ -10655,8 +10674,8 @@ "tslib": "^2.1.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "*", + "react-dom": "*" } }, "node_modules/esquery": { @@ -10911,9 +10930,9 @@ } }, "node_modules/nano-css": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.0.tgz", - "integrity": "sha512-jNikscxQv93wwhmXN4w6XC1HVllqo3UvK2u7PRqjOfMJaD5gGkGvECgLxtILndQrWMUr4Mn8I4VurUyxMOipFw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.6.1.tgz", + "integrity": "sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "css-tree": "^1.1.2", @@ -10984,13 +11003,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz", - "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", + "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.23.3" }, @@ -11086,9 +11105,9 @@ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -11859,12 +11878,12 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.3.tgz", - "integrity": "sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.5.tgz", + "integrity": "sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -12251,9 +12270,9 @@ } }, "node_modules/@types/node": { - "version": "20.9.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.3.tgz", - "integrity": "sha512-nk5wXLAXGBKfrhLB0cyHGbSqopS+nz0BUgZkUQqSHSSgdee0kssp1IAqlQOu333bW+gMNs2QREx7iynm19Abxw==", + "version": "20.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", + "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", "dependencies": { "undici-types": "~5.26.4" } @@ -13300,6 +13319,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" @@ -13417,9 +13437,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.16", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.16.tgz", - "integrity": "sha512-766c37araZ9vxtYs25gvY2wNdFWsT2ZiUvOd0zMhTaoGj6B911N8CKQWgXXJoPMLF3J82thpRqQA7Rf3rBwyJw==", + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", "dev": true, "dependencies": { "@types/react": "*" @@ -13439,11 +13459,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dependencies": { - "@babel/types": "^7.23.4", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -13523,13 +13543,13 @@ "dev": true }, "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" @@ -15181,11 +15201,15 @@ } }, "node_modules/katex": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", - "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", + "version": "0.16.9", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.9.tgz", + "integrity": "sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], "dependencies": { - "commander": "^2.19.0" + "commander": "^8.3.0" }, "bin": { "katex": "cli.js" @@ -15334,6 +15358,19 @@ "node": ">= 0.6" } }, + "node_modules/axios-mock-adapter": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", + "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "is-buffer": "^2.0.5" + }, + "peerDependencies": { + "axios": ">= 0.17.0" + } + }, "node_modules/rollup-plugin-terser/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15525,11 +15562,11 @@ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, "node_modules/interactjs": { - "version": "1.10.21", - "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.21.tgz", - "integrity": "sha512-85GdTHci8W7gFzSPfV26x69LA3Gnl64NbVYDTfw0Jo4rVvH4WAGBNjM5xV2UJwMvusmJLo2XkJDK5k7IsU87bA==", + "version": "1.10.23", + "resolved": "https://registry.npmjs.org/interactjs/-/interactjs-1.10.23.tgz", + "integrity": "sha512-ZnxfYh4QBnWnnCXVOVHEU4r2w01EQMTsLCd71n0mpsItFhV7S/jXycvzgsNvf5I99trBRRwP8RJXU8oy4hRFEw==", "dependencies": { - "@interactjs/types": "1.10.21" + "@interactjs/types": "1.10.23" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -15813,9 +15850,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", - "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "engines": { "node": "14 || >=16.14" } @@ -16710,18 +16747,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -16978,9 +17015,9 @@ "dev": true }, "node_modules/@interactjs/types": { - "version": "1.10.21", - "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.21.tgz", - "integrity": "sha512-U5N3eg9m3rLO9PrQkAaLKsSlCTRxpuMyhPBdMpicPH09icW/kIjLWQcDa3tP/I57zG0yxG6zBFREAcrjyIB3Bw==" + "version": "1.10.23", + "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.23.tgz", + "integrity": "sha512-8/s1gFVNW60SqFLiFQDsvJuuzICthzyOu52bu8MhLFsxFnhVfng1xzjxi2+UokQULsp0WgBsctIS9bF7se9nJQ==" }, "node_modules/handle-thing": { "version": "2.0.1", @@ -17668,9 +17705,9 @@ } }, "node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "dependencies": { "minimatch": "^9.0.0" }, @@ -18103,9 +18140,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", - "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", + "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -18316,9 +18353,9 @@ "dev": true }, "node_modules/@rushstack/eslint-patch": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", - "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.6.0.tgz", + "integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==", "dev": true }, "node_modules/@npmcli/fs": { @@ -19363,9 +19400,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -19379,9 +19416,9 @@ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", - "integrity": "sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz", + "integrity": "sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==", "dev": true, "dependencies": { "@adobe/css-tools": "^4.3.1", @@ -21237,9 +21274,9 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "peer": true, "dependencies": { @@ -21654,9 +21691,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -21673,7 +21710,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -21880,14 +21917,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", + "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", "dev": true, "dependencies": { "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-transform-spread": "^7.23.3", "semver": "^6.3.1", @@ -21899,15 +21936,15 @@ "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-transform-unicode-escapes": "^7.23.3", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-transform-class-properties": "^7.23.3", @@ -21918,28 +21955,28 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", "babel-plugin-polyfill-corejs3": "^0.8.5", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-transform-template-literals": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-sticky-regex": "^7.23.3", "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-transform-shorthand-properties": "^7.23.3", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", "@babel/plugin-syntax-json-strings": "^7.8.3", "core-js-compat": "^3.31.0", - "@babel/compat-data": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/compat-data": "^7.23.5", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", "@babel/preset-modules": "0.1.6-no-external-plugins", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-transform-member-expression-literals": "^7.23.3", @@ -21952,15 +21989,15 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-transform-modules-systemjs": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", "@babel/plugin-transform-typeof-symbol": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-async-to-generator": "^7.23.3", "babel-plugin-polyfill-regenerator": "^0.5.3", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-transform-unicode-property-regex": "^7.23.3", "@babel/plugin-transform-for-of": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", @@ -22420,9 +22457,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.4.tgz", - "integrity": "sha512-zQyB4MJGM+rvd4pM58n26kf3xbiitw9MHzL8oLiBMKb8MCtVDfV5nDzzJWWzLMtbvKI9wN6XwJYl479qF4JluQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.5.tgz", + "integrity": "sha512-7+ziVclejQTLYhXl+Oi1f6gTGD1XDCeLa4R472TNGQxb08zbEJ0OdNoh5Piz+57Ltmui6xR88BXR4gS3/Toslw==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -22748,9 +22785,9 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -22908,9 +22945,9 @@ } }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -23238,9 +23275,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -23309,9 +23346,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.9", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.9.tgz", - "integrity": "sha512-zJeWhqBwVoPm83sP8h1/SVntwWTu5lZbKQGCvBjxQOyEWnKnsaomt2y7SlV4KfwlrHAHHAn00Sh4IAWaIsGOgQ==", + "version": "29.5.10", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", + "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -23747,9 +23784,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } @@ -24256,17 +24293,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -25414,9 +25451,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -26393,9 +26430,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "node_modules/@npmcli/git/node_modules/which": { @@ -27559,20 +27596,20 @@ } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -28269,12 +28306,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -28402,9 +28439,9 @@ } }, "node_modules/@types/react": { - "version": "18.2.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.38.tgz", - "integrity": "sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==", + "version": "18.2.40", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.40.tgz", + "integrity": "sha512-H+BUhb9C1zBtogDLAk+KCNRKiHDrqSwQT/0z0PVTwMFBxqg3011ByLomADtgkgMkfwj4AMOiXBReyLTUBg681g==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -28537,6 +28574,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", diff --git a/SAS/TMSS/frontend/tmss_webapp/package.json b/SAS/TMSS/frontend/tmss_webapp/package.json index 8fbc377c991ebf90e99d914514109fb7498af0d5..f84b92bb304bac87a30a19a2a42a9720f570d4cc 100644 --- a/SAS/TMSS/frontend/tmss_webapp/package.json +++ b/SAS/TMSS/frontend/tmss_webapp/package.json @@ -6,12 +6,12 @@ "@ag-grid-community/all-modules": "^24.1.0", "@apidevtools/json-schema-ref-parser": "^9.0.9", "@fortawesome/fontawesome-free": "^5.13.1", - "@json-editor/json-editor": "^2.11.0", + "@json-editor/json-editor": "^2.12.0", "@kevincobain2000/json-to-html-table": "^1.0.4", "@microlink/react-json-view": "^1.23.0", "ag-grid-community": "^24.1.0", "ag-grid-react": "^24.1.1", - "axios": "^1.6.0", + "axios": "^1.6.2", "bootstrap": "^4.5.0", "chart.js": "^4.4.0", "chartjs-plugin-annotation": "^3.0.1", @@ -19,60 +19,60 @@ "flatpickr": "^4.6.13", "font-awesome": "^4.7.0", "history": "^5.3.0", - "html2canvas": "^1.0.0-rc.7", + "html2canvas": "^1.4.1", "immer": "^10.0.3", - "interactjs": "^1.10.19", + "interactjs": "^1.10.23", "jquery": "^3.7.1", "json-schema-ref-parser": "^1.0.0-alpha.21", "jspdf": "^2.5.1", - "jspdf-autotable": "^3.7.0", - "katex": "^0.12.0", + "jspdf-autotable": "^3.7.1", + "katex": "^0.16.9", "leaflet": "^1.9.4", "lodash": "^4.17.21", "match-sorter": "^4.2.1", "moment": "^2.29.4", "node-polyfill-webpack-plugin": "^2.0.1", - "npm-check-updates": "^16.14.6", + "npm-check-updates": "^16.14.11", "papaparse": "^5.4.1", "pptr-testing-library": "^0.7.0", "primeflex": "^3.3.1", "primeicons": "6.0.1", "primereact": "9.6.2", - "prop-types": "^15.7.2", - "puppeteer": "^21.4.1", + "prop-types": "^15.8.1", + "puppeteer": "^21.5.2", "react": "^18.2.0", "react-app-polyfill": "^1.0.6", "react-beautiful-dnd": "^13.1.1", - "react-beforeunload": "^2.4.0", + "react-beforeunload": "^2.6.0", "react-bootstrap": "^1.0.1", "react-bootstrap-datetimepicker": "0.0.22", "react-calendar-timeline": "^0.28.0", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", - "react-flatpickr": "^3.10.12", + "react-flatpickr": "^3.10.13", "react-frame-component": "^4.1.2", "react-json-to-table": "^0.1.7", "react-leaflet": "^4.2.1", "react-leaflet-cluster": "^2.1.0", - "react-live-clock": "^6.1.14", + "react-live-clock": "^6.1.18", "react-loader-spinner": "^5.4.5", "react-moment": "^1.1.3", "react-redux": "^7.2.4", "react-router-dom": "^5.2.0", - "react-table": "^7.2.1", + "react-table": "^7.8.0", "react-table-plugins": "^1.3.4", - "react-to-print": "^2.12.4", + "react-to-print": "^2.14.15", "react-tooltip": "^4.5.1", "react-transition-group": "^2.5.1", "react-use-websocket": "^4.5.0", "react-websocket": "^2.1.0", - "reactstrap": "^9.2.0", + "reactstrap": "^9.2.1", "redux": "^4.2.1", "replace-in-file": "^7.0.2", "sass": "^1.69.5", "shortcut-buttons-flatpickr": "^0.4.0", "styled-components": "^5.1.1", - "suneditor": "^2.36.5", + "suneditor": "^2.45.1", "suneditor-react": "^3.6.1", "typescript": "^3.9.5", "use-axios": "^1.0.0", @@ -119,7 +119,7 @@ "cleanTemplateSchemas": "node cleanTemplateSchemas.js", "test:ci": "react-scripts test -all --collectCoverage --coverageDirectory=\"./coverage\" --ci --reporters=default --reporters=jest-junit --watchAll=false" }, - "proxy": "http://127.0.0.1:8008/", + "proxy": "http://127.0.0.1:8008", "eslintConfig": { "extends": "react-app" }, @@ -138,21 +138,22 @@ "devDependencies": { "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", "@babel/plugin-transform-private-property-in-object": "7.22.11", - "@babel/preset-env": "^7.23.2", - "@testing-library/jest-dom": "^6.1.4", - "@testing-library/react": "^14.0.0", + "@babel/preset-env": "^7.23.5", + "@testing-library/jest-dom": "^6.1.5", + "@testing-library/react": "^14.1.2", "@testing-library/user-event": "^14.5.1", - "@types/jest": "^29.5.6", + "@types/jest": "^29.5.10", "@types/react-router-dom": "^5.3.3", "ajv": "^8.12.0", + "axios-mock-adapter": "^1.22.0", "babel-jest": "^29.7.0", "babel-polyfill": "^6.26.0", "customize-cra": "^1.0.0", - "eslint": "^8.52.0", - "eslint-formatter-gitlab": "^5.0.0", + "eslint": "^8.55.0", + "eslint-formatter-gitlab": "^5.1.0", "eslint-plugin-react": "^7.33.2", "jest-canvas-mock": "^2.5.2", - "jest-editor-support": "^31.1.1", + "jest-editor-support": "^31.1.2", "jest-expect-message": "^1.1.3", "jest-junit": "^16.0.0", "jest-mock-console": "^2.0.0", diff --git a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateCore.js b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateCore.js new file mode 100644 index 0000000000000000000000000000000000000000..a706c0be1d5ce45e5657a1264dcd3738d246bfcd --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateCore.js @@ -0,0 +1,361 @@ +const fs = require('fs'); +const path = require('path'); +const replace = require('replace-in-file'); +const _ = require('lodash'); + +function getTemplateFiles(dir) { + + console.log(" getTemplateFiles: " + dir); + let files = fs.readdirSync(dir); + files = files.map(file => { + const filePath = path.join(dir, file); + const stats = fs.statSync(filePath); + if (stats.isDirectory()) return getTemplateFiles(filePath); + else if (stats.isFile()) return filePath; + }); + return files.reduce((all, folderContents) => all.concat(folderContents), []); +} + + +/// the flow is: From DirectoryToParse to Public Folder to Schema +function prepareSchemas(directoryToParse) { + console.log("Copying backend schema files... : " + directoryToParse); + try { + startpreparingSchemas(directoryToParse); + } + catch (error) { + console.trace(error); + } +} +module.exports = { + prepareSchemas: prepareSchemas + +} + + + +function startpreparingSchemas(directoryToParse) { + + console.log("startpreparingSchemas") + // Get and Copy all template files from backend source to frontend app folders and format as required + let backEndFiles = getTemplateFiles(directoryToParse); + + if (backEndFiles !== null) { + console.log("getTemplateFiles:", directoryToParse) + // Copy backend template json files to public/schemas folder in frontend app + copyFromBackEnd(backEndFiles, directoryToParse); + + // Get all template files from public/schema folder and format as required + let files = getTemplateFiles('public' + path.sep + 'schemas') + replaceHosts(files); + scanFiles(files); + parseStrategicFiles(); + } + + + console.log("Getting definitions from common_schema_templates...."); + let definitionTemplates = getTemplateFiles("build/schemas/common_schema_template"); + console.log(definitionTemplates); + let definitions = {}, definitionFiles = []; + for (const definitionTemplate of definitionTemplates) { + const data = fs.readFileSync(definitionTemplate, 'utf8'); + let definitionSchema = JSON.parse(data); + if (definitionSchema.schema && definitionSchema.schema.definitions) { + definitions = { ...definitions, ...definitionSchema.schema.definitions }; + definitionFiles.push(definitionTemplate.substring(definitionTemplate.lastIndexOf("/") + 1)); + } + } + console.log("... got definitions"); + convertConstraintTemplates(definitions, definitionFiles); + converTaskTemplates(definitions, definitionFiles); + + +} +function converTaskTemplates(definitions, definitionFiles) { + let taskFiles = getTemplateFiles("build/schemas/task_template"); + + if (taskFiles !== null) { + let templates = []; + let index = 1; + console.log("Getting task_templates"); + for (const file of taskFiles) { + + console.log("Working on File:" + file); + const data = fs.readFileSync(file, 'utf8'); + let taskTemplate = JSON.parse(data); + + taskTemplate.id = index; + taskTemplate.ref_resolved_schema = { definitions: definitions, properties: taskTemplate.schema["properties"] }; + shortenUrls(taskTemplate); + console.log("added ref_solved_schema for Task template :" + file) + let stationconfig = taskTemplate?.schema?.properties?.station_configuration; + if (stationconfig) { taskTemplate.schema.properties.station_configuration["$ref"] = "#/definitions/station_configuration"; } + if (taskTemplate?.schema?.properties?.QA) taskTemplate.schema.properties.QA["$ref"] = "#/definitions/QA"; + if (taskTemplate?.schema?.properties?.duration) taskTemplate.schema.properties.duration["$ref"] = "#/definitions/duration"; + if (taskTemplate?.schema?.properties?.calibrator) taskTemplate.schema.properties.calibrator["$ref"] = "#/definitions/calibrator"; + if (taskTemplate?.schema?.properties?.correlator) taskTemplate.schema.properties.correlator["$ref"] = "#/definitions/correlator"; + if (taskTemplate?.schema?.properties?.beamformer) { taskTemplate.schema.properties.beamformer["$ref"] = "#/definitions/beamformer"; } + if (taskTemplate?.schema?.properties?.pointing) { taskTemplate.schema.properties.pointing["$ref"] = "#/definitions/pointing"; } + + index++; + templates.push(taskTemplate); + } + templates = JSON.stringify(templates); + templates = templates.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); + templates = templates.replace(/"\$ref":\s*"https:\/\/tmss\.lofar\.eu\/api\/schemas\/commonschematemplate\/.*?\/definitions\/(.*?)"/g, '"$ref": "#/definitions/$1"'); + + + + + for (const defFile of definitionFiles) { + const fileRegex = new RegExp(defFile, 'g'); + templates = templates.replace(fileRegex, ""); + } + + //fs.writeFileSync("src/__mocks__/task_templates.log", templates); + const jsonObject = JSON.parse(templates); + //console.log(jsonObject); + + console.log("Creating task_templates.json ..."); + fs.writeFileSync("src/__mocks__/task_templates.json", JSON.stringify({ templates: jsonObject }, null, 4)); + console.log("... Created task_templates.json"); + } +} + +function copyFromBackEnd(backEndFiles, directoryToParse) { + for (let file of backEndFiles) { + if (file.indexOf(".json") <= 0) { continue; } + + let folderName = file.replace(directoryToParse, ""); + console.log("file" + file + " directoryToParse:" + directoryToParse + " foldername:" + folderName); + folderName = folderName.substring(1, folderName.lastIndexOf(path.sep)); + let fileName = file.substring(file.lastIndexOf(path.sep) + 1); + const data = fs.readFileSync(file, 'utf8'); + + let folderschemapath = "public" + path.sep + "schemas" + path.sep + folderName; + if (!fs.existsSync(folderschemapath)) { + console.log("Creating folder ...", folderschemapath); + fs.mkdirSync(folderschemapath, { recursive: true }); + } + let filenamewithpath = folderschemapath + path.sep + fileName; + console.log("filename:" + fileName) + console.log("folderschemapath:" + folderschemapath) + + console.log("Writing to file...", filenamewithpath); + fs.writeFileSync(filenamewithpath, data); + } +} + +function parseStrategicFiles() { + let strategyFiles = getTemplateFiles("build/schemas/scheduling_unit_observing_strategy_template"); + let strategies = []; + let index = 1; + console.log("Getting observing_strategy_templates"); + for (const file of strategyFiles) { + console.log("StrategyFiles:" + file); + const data = fs.readFileSync(file, 'utf8'); + let strategyTemplate = JSON.parse(data); + strategyTemplate.id = index; + strategyTemplate.state_value = strategyTemplate.state; + strategyTemplate.purpose_value = strategyTemplate.purpose; + index++; + strategies.push(strategyTemplate); + } + console.log("Creating observing_strategy_templates.json ..."); + fs.writeFileSync("src/__mocks__/observing_strategy_templates.json", JSON.stringify({ strategies: strategies }, null, 4)); + console.log("... Created observing_strategy_templates.json"); +} + +function shortenUrls(taskTemplate) { + if (taskTemplate.name.indexOf("observation") >= 0) { + taskTemplate.type = "http://localhost:3000/api/task_type/observation"; + taskTemplate.type_value = "observation"; + } else if (taskTemplate.name.indexOf("pipeline") >= 0) { + taskTemplate.type = "http://localhost:3000/api/task_type/pipeline"; + taskTemplate.type_value = "pipeline"; + } else if (taskTemplate.name.indexOf("cleanup") >= 0) { + taskTemplate.type = "http://localhost:3000/api/task_type/cleanup"; + taskTemplate.type_value = "cleanup"; + } else if (taskTemplate.name.indexOf("ingest") >= 0) { + taskTemplate.type = "http://localhost:3000/api/task_type/ingest"; + taskTemplate.type_value = "ingest"; + } +} + +function replaceHosts(files) { + console.log("Replace Hosts...", files); + + if (files !== null) { + console.log("Updating schema ref path..."); + console.log(files.join(', ')); + console.log("Replace the host and port address of template apis to localhost"); + + + const hostReplaceOptions = { + files: files, + from: /http:\/\/127.0.0.1:8000\/api/g, + to: 'http://localhost:3000', + }; + console.log(" \\ hostReplaceOptions (127.0.0.1 to localhost) "); + try { + const results = replace.sync(hostReplaceOptions); + console.log('Replacement Results:', results); + } + catch (error) { + console.error('Replacement Error occurred:', error); + } + + console.log(" / hostReplaceOptions "); + const hostReplaceOptionslofar = { + files: files, + from: /https:\/\/tmss.lofar.eu\/api/g, + to: 'http://localhost:3000', + }; + console.log(" \\ hostReplaceOptionslofar (tms lofar to localhost) "); + try { + const results = replace.sync(hostReplaceOptionslofar); + console.log('hostReplaceOptionslofar changed files:', results.join(', ')); + } + catch (error) { + console.error('hostReplaceOptionslofar Error occurred:', error); + } + + + console.log(" / hostReplaceOptionslofar "); + + + convertVersions(files); + console.log("Past Replacer One "); + } +} + +function scanFiles(files) { + for (let file of files) { + if (file.indexOf(".json") <= 0) { continue; } + console.log("In Loop, Looking at " + file); + + let folderName = file.substring(file.indexOf("schemas" + path.sep) + 8, file.lastIndexOf(path.sep)); + console.log("In Loop, Looking at " + file + " in folder" + folderName); + // Replae folder name + let folderRef = folderName.replace(/_/g, ""); + console.log("In Loop, Looking at " + file + " in folder" + folderName + " in text replaced to " + folderRef); + let folderRefRegex = new RegExp(folderRef, "g"); + const folderReplaceOptions = { + files: files, + from: folderRefRegex, + to: folderName, + }; + + console.log("\\ folderReplaceOptions file:" + file + ' folder:' + folderRef); + try { + const results = replace.sync(folderReplaceOptions); + console.log('folderReplaceOptions Results:', results); + } + catch (error) { + console.error('folderReplaceOptions Error occurred:', error); + } + console.log("/ folderReplaceOptions "); + copyToBuildFolder(file, folderName); + } +} + +function copyToBuildFolder(file, folderName) { + console.log("Copy templates to build folder so that it can be referred by the test suites . file" + file); + const data = fs.readFileSync(file, 'utf8'); + //console.log(data) + if (!fs.existsSync("build/schemas/" + folderName)) { + console.log("Creating folder.... build/schemas/" + folderName); + fs.mkdirSync("build/schemas/" + folderName, { recursive: true }); + } + console.log("Copying files from ", file, "to", file.replace("public", "build")); + fs.writeFileSync(file.replace("public", "build"), data); + + // Update the json files in public/schemas folder to contain only the schema object + const jsonData = JSON.parse(data); + if (jsonData["schema"]) { + console.log("Updating schema file...", file); + fs.writeFileSync(file, JSON.stringify(jsonData["schema"], null, 4)); + } else { + console.log("Not Updating schema file..., no schema in top node", file); + } +} + +function convertVersions(files) { + for (const ver of _.range(1, 14)) { + let verRegx = new RegExp(`/${ver}/#`, 'g'); + let verReplacer = `-${ver}.json#`; + // Replace db_id with file extension + const fileReplaceOptions = { + files: files, + from: verRegx, + to: verReplacer + }; + + console.log("\\ fileReplaceOptions "); + try { + const results = replace.sync(fileReplaceOptions); + console.log('fileReplaceOptions Results:', results); + } + catch (error) { + console.error('fileReplaceOptions Error occurred:', error); + } + console.log("/ fileReplaceOptions "); + + verRegx = new RegExp(`/${ver}#`, 'g'); + const fileReplaceOptions1 = { + files: files, + from: verRegx, + to: verReplacer + }; + + + console.log("\\ fileReplaceOptions1 "); + try { + const results = replace.sync(fileReplaceOptions1); + console.log('fileReplaceOfileReplaceOptions1ptions Results:', results); + } + catch (error) { + console.error('fileReplaceOptions1 Error occurred:', error); + } + + } +} + +function convertConstraintTemplates(definitions, definitionFiles) { + let constrainttemplatefiles = getTemplateFiles("build/schemas/scheduling_constraints_template"); + + + if (constrainttemplatefiles !== null) { + let index = 0; + const constraintDefinitionKeys = ["distance_on_sky", "elevation", "timedelta", "timestamp", "timewindow", "pointing"]; + for (const file of constrainttemplatefiles) { + const data = fs.readFileSync(file, 'utf8'); + let constraintTemplate = JSON.parse(data); + constraintTemplate.id = index; + convertResolved(constraintTemplate, constraintDefinitionKeys, definitions); + index++; + constraintTemplate = JSON.stringify(constraintTemplate); + constraintTemplate = constraintTemplate.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); + for (const defFile of definitionFiles) { + const fileRegex = new RegExp(defFile, 'g'); + constraintTemplate = constraintTemplate.replace(fileRegex, ""); + } + fs.writeFileSync(file, JSON.stringify(JSON.parse(constraintTemplate), null, 4)); + console.log("... added ref_resolved_schema to constraints_template:" + file); + } + } +} + +function convertResolved(Template, DefinitionKeys, definitions) { + Template.ref_resolved_schema = _.cloneDeep(Template.schema); + for (const defKey of DefinitionKeys) { + + if (definitions[defKey]) { + console.log("has key" + defKey); + if (Template.ref_resolved_schema.definition) { + console.log(" Setting resolved value for ", defKey) + Template.ref_resolved_schema.definitions[defKey] = definitions[defKey]; + } + } + } +} diff --git a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js index 8770a0628754889675e0b2087d632ed15e9d0ba7..2ba776d89179de466a5b23a18031531f3a8e0300 100644 --- a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js +++ b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas.js @@ -1,230 +1,2 @@ -//const fs = require('fs').promises; -const fs = require('fs'); -const path = require('path'); -const replace = require('replace-in-file'); -const _ = require('lodash'); - -async function getTemplateFiles(dir) { - let files = await fs.promises.readdir(dir); - files = await Promise.all(files.map(async file => { - const filePath = path.join(dir, file); - const stats = await fs.promises.stat(filePath); - if (stats.isDirectory()) return getTemplateFiles(filePath); - else if (stats.isFile()) return filePath; - })); - - return files.reduce((all, folderContents) => all.concat(folderContents), []); -} -console.log("Copying backend schema files..."); - -// Get and Copy all template files from backend source to frontend app folders and format as required -getTemplateFiles('../../../../install/opt/lofar/share/tmss/schemas').then(async (backEndFiles) => { - console.log(backEndFiles); - // Copy backend template json files to public/schemas folder in frontend app - for (let file of backEndFiles) { - if (file.indexOf(".json") <= 0) { continue; } - //'../../../../install/opt/lofar/share/tmss/schemas/common_schema_template/QA-1.json' - //public/schemas/../.././../../../../install/opt/lofar/share/tmss/schemas/common_schema_template/QA-1.json - //let folderName = file.substring(file.indexOf("schemas\\")+8, file.lastIndexOf("\\")); - let folderName = file.replace('../../../../install/opt/lofar/share/tmss/schemas', "") - folderName = folderName.substring(1, folderName.lastIndexOf("/")); - let fileName = file.substring(file.lastIndexOf("/") + 1); - const data = fs.readFileSync(file, 'utf8') - //console.log(data) - if (!fs.existsSync("public/schemas/" + folderName)) { - console.log("Creating folder ...", "public/schemas/" + folderName); - fs.mkdirSync("public/schemas/" + folderName, { recursive: true }); - } - console.log("Writing to file...", "public/schemas/" + folderName + "/" + fileName); - fs.writeFileSync("public/schemas/" + folderName + "/" + fileName, data); - } - - // Get all template files from public/schema folder and format as required - getTemplateFiles('public/schemas').then(async (files) => { - console.log("Updating schema ref path..."); - console.log(files); - - // Replace the host and port address of template apis to localhost - const hostReplaceOptions = { - //files: 'schemas/scheduling_constraints_template/constraints-1.json', - files: files, - from: /http:\/\/127.0.0.1:8000\/api/g, - to: 'http://localhost:3000', - }; - console.log(await replace(hostReplaceOptions)); - - const hostReplaceOptions1 = { - //files: 'schemas/scheduling_constraints_template/constraints-1.json', - files: files, - from: /https:\/\/tmss.lofar.eu\/api/g, - to: 'http://localhost:3000', - }; - console.log(await replace(hostReplaceOptions1)); - - for (const ver of _.range(1, 11)) { - let verRegx = new RegExp(`/${ver}/#`, 'g'); - let verReplacer = `-${ver}.json#`; - // Replace db_id with file extension - const fileReplaceOptions = { - files: files, - from: verRegx, - to: verReplacer - }; - console.log(await replace(fileReplaceOptions)); - - verRegx = new RegExp(`/${ver}#`, 'g'); - const fileReplaceOptions1 = { - files: files, - from: verRegx, - to: verReplacer - }; - console.log(await replace(fileReplaceOptions1)); - } - /*const fileReplaceOptions2 = { - files: files, - from: /.json#\/definitions/g, - to: '.json#/schema/definitions', - }; - console.log(await replace(fileReplaceOptions2));*/ - - for (let file of files) { - if (file.indexOf(".json") <= 0) { continue; } - console.log(file); - - let folderName = file.substring(file.indexOf("schemas/") + 8, file.lastIndexOf("/")); - // Replae folder name - let folderRef = folderName.replace(/_/g, ""); - let folderRefRegex = new RegExp(folderRef, "g"); - const folderReplaceOptions = { - files: files, - from: folderRefRegex, - to: folderName, - }; - console.log(await replace(folderReplaceOptions)); - - // Copy templates to build folder so that it can be referred by the test suites - const data = fs.readFileSync(file, 'utf8'); - //console.log(data) - if (!fs.existsSync("build/schemas/" + folderName)) { - console.log("Creating folder.... build/schemas/" + folderName); - fs.mkdirSync("build/schemas/" + folderName, { recursive: true }); - } - console.log("Copying files from ", file, file.replace("public", "build")); - fs.writeFileSync(file.replace("public", "build"), data); - - // Update the json files in public/schemas folder to contain only the schema object - const jsonData = JSON.parse(data); - if (jsonData["schema"]) { - console.log("Updating schema file...", file); - fs.writeFileSync(file, JSON.stringify(jsonData["schema"], null, 4)); - } - } - - getTemplateFiles("build/schemas/scheduling_unit_observing_strategy_template").then(async (strategyFiles) => { - let strategies = []; - let index = 1; - console.log("Getting observing_strategy_templates"); - for (const file of strategyFiles) { - console.log(file); - const data = fs.readFileSync(file, 'utf8'); - let strategyTemplate = JSON.parse(data); - strategyTemplate.id = index; - strategyTemplate.state_value = strategyTemplate.state; - strategyTemplate.purpose_value = strategyTemplate.purpose; - index++; - strategies.push(strategyTemplate); - } - console.log("Creating observing_strategy_templates.json ..."); - fs.writeFileSync("src/__mocks__/observing_strategy_templates.json", JSON.stringify({ strategies: strategies }, null, 4)); - console.log("... Created observing_strategy_templates.json"); - }); - - console.log("Getting definitions from common_schema_templates...."); - let definitionTemplates = await getTemplateFiles("build/schemas/common_schema_template"); - console.log(definitionTemplates); - let definitions = {}, definitionFiles = []; - for (const definitionTemplate of definitionTemplates) { - const data = fs.readFileSync(definitionTemplate, 'utf8'); - let definitionSchema = JSON.parse(data); - if (definitionSchema.schema && definitionSchema.schema.definitions) { - definitions = { ...definitions, ...definitionSchema.schema.definitions }; - definitionFiles.push(definitionTemplate.substring(definitionTemplate.lastIndexOf("/") + 1)); - } - } - console.log("... got definitions"); - - getTemplateFiles("build/schemas/task_template").then(async (strategyFiles) => { - let templates = []; - let index = 1; - console.log("Getting task_templates"); - for (const file of strategyFiles) { - const data = fs.readFileSync(file, 'utf8'); - let strategyTemplate = JSON.parse(data); - strategyTemplate.id = index; - strategyTemplate.ref_resolved_schema = { definitions: definitions, properties: strategyTemplate.schema["properties"] }; - if (strategyTemplate.name.indexOf("observation") >= 0) { - strategyTemplate.type = "http://localhost:3000/api/task_type/observation"; - strategyTemplate.type_value = "observation"; - } else if (strategyTemplate.name.indexOf("pipeline") >= 0) { - strategyTemplate.type = "http://localhost:3000/api/task_type/pipeline"; - strategyTemplate.type_value = "pipeline"; - } else if (strategyTemplate.name.indexOf("cleanup") >= 0) { - strategyTemplate.type = "http://localhost:3000/api/task_type/cleanup"; - strategyTemplate.type_value = "cleanup"; - } else if (strategyTemplate.name.indexOf("ingest") >= 0) { - strategyTemplate.type = "http://localhost:3000/api/task_type/ingest"; - strategyTemplate.type_value = "ingest"; - } - - - // Fix bad references items. These where actually pointing to production urls. - - if (strategyTemplate?.schema?.properties?.station_configuration) { strategyTemplate.schema.properties.station_configuration["$ref"] = "#/definitions/station_configuration"; } - if (strategyTemplate?.schema?.properties?.QA) strategyTemplate.schema.properties.QA["$ref"] = "#/definitions/QA"; - if (strategyTemplate?.schema?.properties?.duration) strategyTemplate.schema.properties.duration["$ref"] = "#/definitions/duration"; - if (strategyTemplate?.schema?.properties?.calibrator) strategyTemplate.schema.properties.calibrator["$ref"] = "#/definitions/calibrator"; - if (strategyTemplate?.schema?.properties?.correlator) strategyTemplate.schema.properties.correlator["$ref"] = "#/definitions/correlator"; - - - index++; - templates.push(strategyTemplate); - } - templates = JSON.stringify(templates); - templates = templates.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); - for (const defFile of definitionFiles) { - const fileRegex = new RegExp(defFile, 'g'); - templates = templates.replace(fileRegex, ""); - } - console.log("Creating task_templates.json ..."); - fs.writeFileSync("src/__mocks__/task_templates.json", JSON.stringify({ templates: JSON.parse(templates) }, null, 4)); - console.log("... Created task_templates.json"); - }); - - getTemplateFiles("build/schemas/scheduling_constraints_template").then(async (strategyFiles) => { - let index = 0 - const constraintDefinitionKeys = ["distance_on_sky", "elevation", "timedelta", "timestamp", "timewindow", "pointing"]; - for (const file of strategyFiles) { - const data = fs.readFileSync(file, 'utf8'); - let constraintTemplate = JSON.parse(data); - constraintTemplate.id = index; - constraintTemplate.ref_resolved_schema = _.cloneDeep(constraintTemplate.schema); - for (const defKey of constraintDefinitionKeys) { - if (definitions[defKey]) { - constraintTemplate.ref_resolved_schema.definitions[defKey] = definitions[defKey]; - } - } - index++; - constraintTemplate = JSON.stringify(constraintTemplate); - constraintTemplate = constraintTemplate.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); - for (const defFile of definitionFiles) { - const fileRegex = new RegExp(defFile, 'g'); - constraintTemplate = constraintTemplate.replace(fileRegex, ""); - } - fs.writeFileSync(file, JSON.stringify(JSON.parse(constraintTemplate), null, 4)); - console.log("... added ref_resolved_schema to constraints_template"); - } - }); - - }); -}); - +const {prepareSchemas} = require('./prepareTemplateCore.js'); +prepareSchemas('../../../../install/opt/lofar/share/tmss/schemas'); diff --git a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js index ddb2d68e3c0c752553dc0a2d14394d91526284e8..83273d45631f35156ff2667bcefd01e06bce1251 100644 --- a/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js +++ b/SAS/TMSS/frontend/tmss_webapp/prepareTemplateSchemas_dev.js @@ -1,274 +1,3 @@ -//const fs = require('fs').promises; -const fs = require('fs'); const path = require('path'); -const replace = require('replace-in-file'); -const _ = require('lodash'); - -async function getTemplateFiles(dir) { - let files = await fs.promises.readdir(dir); - files = await Promise.all(files.map(async file => { - const filePath = path.join(dir, file); - const stats = await fs.promises.stat(filePath); - if (stats.isDirectory()) return getTemplateFiles(filePath); - else if (stats.isFile()) return filePath; - })); - - return files.reduce((all, folderContents) => all.concat(folderContents), []); -} -console.log("Copying backend schema files..."); - -// Get and Copy all template files from backend source to frontend app folders and format as required -getTemplateFiles('../../backend/src/tmss/tmssapp/schemas').then(async (backEndFiles) => { - console.log(backEndFiles); - // Copy backend template json files to public/schemas folder in frontend app - for (let file of backEndFiles) { - if (file.indexOf(".json") <= 0) { continue; } - let folderName = file.substring(file.indexOf("schemas\\") + 8, file.lastIndexOf("\\")); - let fileName = file.substring(file.lastIndexOf("\\") + 1); - const data = fs.readFileSync(file, 'utf8') - //console.log(data) - if (!fs.existsSync("public/schemas/" + folderName)) { - fs.mkdirSync("public/schemas/" + folderName, { recursive: true }); - } - console.log("Writing to file...", "public/schemas/" + folderName + "/" + fileName); - fs.writeFileSync("public/schemas/" + folderName + "/" + fileName, data); - } - - // Get all template files from public/schema folder and format as required - getTemplateFiles('public/schemas').then(async (files) => { - console.log("Updating schema ref path..."); - console.log(files); - console.log("Replace the host and port address of template apis to localhost") - - const hostReplaceOptions = { - //files: 'schemas/scheduling_constraints_template/constraints-1.json', - files: files, - from: /http:\/\/127.0.0.1:8000\/api/g, - to: 'http://localhost:3000', - }; - console.log(" \\ hostReplaceOptions (127.0.0.1 to localhost) ") - try { - const results = await replace(hostReplaceOptions); - console.log('Replacement Results:', results) - } - catch (error) { - console.error('Replacement Error occurred:', error); - } - - console.log(" / hostReplaceOptions ") - const hostReplaceOptionslofar = { - //files: 'schemas/scheduling_constraints_template/constraints-1.json', - files: files, - from: /https:\/\/tmss.lofar.eu\/api/g, - to: 'http://localhost:3000', - }; - console.log(" \\ hostReplaceOptionslofar (tms lofar to localhost) ") - try { - const results = await replace(hostReplaceOptionslofar); - console.log('hostReplaceOptionslofar Results:', results) - } - catch (error) { - console.error('hostReplaceOptionslofar Error occurred:', error); - } - - - console.log(" / hostReplaceOptionslofar ") - - - for (const ver of _.range(1, 11)) { - let verRegx = new RegExp(`/${ver}/#`, 'g'); - let verReplacer = `-${ver}.json#`; - // Replace db_id with file extension - const fileReplaceOptions = { - files: files, - from: verRegx, - to: verReplacer - }; - - console.log("\\ fileReplaceOptions ") - try { - const results = await replace(fileReplaceOptions); - console.log('fileReplaceOptions Results:', results) - } - catch (error) { - console.error('fileReplaceOptions Error occurred:', error); - } - console.log("/ fileReplaceOptions ") - - verRegx = new RegExp(`/${ver}#`, 'g'); - const fileReplaceOptions1 = { - files: files, - from: verRegx, - to: verReplacer - }; - - - console.log("\\ fileReplaceOptions1 ") - try { - const results = await replace(fileReplaceOptions1); - console.log('fileReplaceOfileReplaceOptions1ptions Results:', results) - } - catch (error) { - console.error('fileReplaceOptions1 Error occurred:', error); - } - - } - console.log("Past Replacer One ") - /*const fileReplaceOptions2 = { - files: files, - from: /.json#\/definitions/g, - to: '.json#/schema/definitions', - }; - console.log(await replace(fileReplaceOptions2));*/ - - for (let file of files) { - if (file.indexOf(".json") <= 0) { continue; } - console.log("In Loop, Looking at " + file); - - let folderName = file.substring(file.indexOf("schemas\\") + 8, file.lastIndexOf("\\")); - // Replae folder name - let folderRef = folderName.replace(/_/g, ""); - let folderRefRegex = new RegExp(folderRef, "g"); - const folderReplaceOptions = { - files: files, - from: folderRefRegex, - to: folderName, - }; - - console.log("\\ folderReplaceOptions ") - try { - const results = await replace(folderReplaceOptions); - console.log('folderReplaceOptions Results:', results) - } - catch (error) { - console.error('folderReplaceOptions Error occurred:', error); - } - console.log("/ folderReplaceOptions ") - - - - - console.log("Copy templates to build folder so that it can be referred by the test suites") - const data = fs.readFileSync(file, 'utf8'); - //console.log(data) - if (!fs.existsSync("build/schemas/" + folderName)) { - console.log("Creating folder.... build/schemas/" + folderName); - fs.mkdirSync("build/schemas/" + folderName, { recursive: true }); - } - console.log("Copying files from ", file, file.replace("public", "build")); - fs.writeFileSync(file.replace("public", "build"), data); - - // Update the json files in public/schemas folder to contain only the schema object - const jsonData = JSON.parse(data); - if (jsonData["schema"]) { - console.log("Updating schema file...", file); - fs.writeFileSync(file, JSON.stringify(jsonData["schema"], null, 4)); - } - } - - getTemplateFiles("build/schemas/scheduling_unit_observing_strategy_template").then(async (strategyFiles) => { - let strategies = []; - let index = 1; - console.log("Getting observing_strategy_templates"); - for (const file of strategyFiles) { - console.log("StrategyFiles:" + file); - const data = fs.readFileSync(file, 'utf8'); - let strategyTemplate = JSON.parse(data); - strategyTemplate.id = index; - strategyTemplate.state_value = strategyTemplate.state; - strategyTemplate.purpose_value = strategyTemplate.purpose; - index++; - strategies.push(strategyTemplate); - } - console.log("Creating observing_strategy_templates.json ..."); - fs.writeFileSync("src/__mocks__/observing_strategy_templates.json", JSON.stringify({ strategies: strategies }, null, 4)); - console.log("... Created observing_strategy_templates.json"); - }); - - console.log("Getting definitions from common_schema_templates...."); - let definitionTemplates = await getTemplateFiles("build/schemas/common_schema_template"); - console.log(definitionTemplates); - let definitions = {}, definitionFiles = []; - for (const definitionTemplate of definitionTemplates) { - const data = fs.readFileSync(definitionTemplate, 'utf8'); - let definitionSchema = JSON.parse(data); - if (definitionSchema.schema && definitionSchema.schema.definitions) { - definitions = { ...definitions, ...definitionSchema.schema.definitions }; - definitionFiles.push(definitionTemplate.substring(definitionTemplate.lastIndexOf("\\") + 1)); - } - } - console.log("... got definitions"); - - getTemplateFiles("build/schemas/task_template").then(async (strategyFiles) => { - let templates = []; - let index = 1; - console.log("Getting task_templates"); - for (const file of strategyFiles) { - const data = fs.readFileSync(file, 'utf8'); - let taskTemplate = JSON.parse(data); - taskTemplate.id = index; - taskTemplate.ref_resolved_schema = { definitions: definitions, properties: taskTemplate.schema["properties"] }; - if (taskTemplate.name.indexOf("observation") >= 0) { - taskTemplate.type = "http://localhost:3000/api/task_type/observation"; - taskTemplate.type_value = "observation"; - } else if (taskTemplate.name.indexOf("pipeline") >= 0) { - taskTemplate.type = "http://localhost:3000/api/task_type/pipeline"; - taskTemplate.type_value = "pipeline"; - } else if (taskTemplate.name.indexOf("cleanup") >= 0) { - taskTemplate.type = "http://localhost:3000/api/task_type/cleanup"; - taskTemplate.type_value = "cleanup"; - } else if (taskTemplate.name.indexOf("ingest") >= 0) { - taskTemplate.type = "http://localhost:3000/api/task_type/ingest"; - taskTemplate.type_value = "ingest"; - } - - if (taskTemplate?.schema?.properties?.beamformer) { taskTemplate.schema.properties.beamformer["$ref"] = "#/definitions/beamformer"; } - if (taskTemplate?.schema?.properties?.station_configuration) { taskTemplate.schema.properties.station_configuration["$ref"] = "#/definitions/station_configuration"; } - if (taskTemplate?.schema?.properties?.QA) taskTemplate.schema.properties.QA["$ref"] = "#/definitions/QA"; - if (taskTemplate?.schema?.properties?.duration) taskTemplate.schema.properties.duration["$ref"] = "#/definitions/duration"; - if (taskTemplate?.schema?.properties?.calibrator) taskTemplate.schema.properties.calibrator["$ref"] = "#/definitions/calibrator"; - if (taskTemplate?.schema?.properties?.correlator) taskTemplate.schema.properties.correlator["$ref"] = "#/definitions/correlator"; - - index++; - templates.push(taskTemplate); - } - templates = JSON.stringify(templates); - templates = templates.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); - for (const defFile of definitionFiles) { - const fileRegex = new RegExp(defFile, 'g'); - templates = templates.replace(fileRegex, ""); - } - console.log("Creating task_templates.json ..."); - fs.writeFileSync("src/__mocks__/task_templates.json", JSON.stringify({ templates: JSON.parse(templates) }, null, 4)); - console.log("... Created task_templates.json"); - }); - - getTemplateFiles("build/schemas/scheduling_constraints_template").then(async (strategyFiles) => { - let index = 0 - const constraintDefinitionKeys = ["distance_on_sky", "elevation", "timedelta", "timestamp", "timewindow", "pointing"]; - for (const file of strategyFiles) { - const data = fs.readFileSync(file, 'utf8'); - let constraintTemplate = JSON.parse(data); - constraintTemplate.id = index; - constraintTemplate.ref_resolved_schema = _.cloneDeep(constraintTemplate.schema); - for (const defKey of constraintDefinitionKeys) { - if (definitions[defKey]) { - constraintTemplate.ref_resolved_schema.definitions[defKey] = definitions[defKey]; - } - } - index++; - constraintTemplate = JSON.stringify(constraintTemplate); - constraintTemplate = constraintTemplate.replace(/http:\/\/localhost:3000\/schemas\/common_schema_template\//g, ""); - for (const defFile of definitionFiles) { - const fileRegex = new RegExp(defFile, 'g'); - constraintTemplate = constraintTemplate.replace(fileRegex, ""); - } - fs.writeFileSync(file, JSON.stringify(JSON.parse(constraintTemplate), null, 4)); - console.log("... added ref_resolved_schema to constraints_template"); - } - }); - - }); - -}); - +const {prepareSchemas} = require('./prepareTemplateCore.js'); +prepareSchemas(path.join('..','..','backend','src','tmss','tmssapp','schemas')); diff --git a/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties b/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties index e5a26e593beb04e246bd1e162bf5fe8db5c9ce4a..64f25b91506f7fe3eda32247501bfc7d158007dd 100644 --- a/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties +++ b/SAS/TMSS/frontend/tmss_webapp/sonar-project.properties @@ -10,7 +10,7 @@ sonar.javascript.lcov.reportPaths=build/gnucxx11_opt/SAS/TMSS/frontend/tmss_weba #pipeline fails when the quality gate does not pass the standards sonar.qualitygate.wait=true sonar.qualitygate.timeout=1000 -sonar.coverage.exclusions=**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js +sonar.coverage.exclusions=**/*.test.js,**/setupTests.js,**/__mocks__/*.data.js,**/__mocks__/*.json,**/*.scss # This is the name and version displayed in the SonarCloud UI. #sonar.projectName=TMSS Frontend #sonar.projectVersion=1.0 diff --git a/SAS/TMSS/frontend/tmss_webapp/src/App.js b/SAS/TMSS/frontend/tmss_webapp/src/App.js index 4391bf5ade7e37d716aea1ca2941ffc67872c935..145f23fc69bfa1640825f360cf2c88363f4ceeac 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/App.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/App.js @@ -23,7 +23,7 @@ import { CustomDialog } from './layout/components/CustomDialog'; import AuthStore from './authenticate/auth.store'; import { Provider } from "react-redux"; import AuthComponent from './components/AuthComponent'; -import DateTimeInfo from './layout/components/DateTimeInfo'; + const { publish, subscribe } = pubsub(); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json index 4b2f99ec225507a8e8e4a001b97ad209e87c5b44..6918a1e9ae4039b0823dac0a4a5e3f8b6470da66 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json +++ b/SAS/TMSS/frontend/tmss_webapp/src/__mocks__/task_templates.json @@ -134,7 +134,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -252,7 +252,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -445,7 +445,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -480,7 +480,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -545,7 +545,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -572,7 +572,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -588,13 +588,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -608,10 +608,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -620,7 +620,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -926,7 +926,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -1706,22 +1706,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -1755,7 +1755,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -1962,7 +1962,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -2080,7 +2080,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -2273,7 +2273,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -2308,7 +2308,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -2373,7 +2373,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -2400,7 +2400,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -2416,13 +2416,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -2436,10 +2436,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -2448,7 +2448,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -2754,7 +2754,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -3534,22 +3534,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -3583,7 +3583,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -3790,7 +3790,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -3908,7 +3908,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -4101,7 +4101,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -4136,7 +4136,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -4201,7 +4201,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -4228,7 +4228,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -4244,13 +4244,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -4264,10 +4264,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -4276,7 +4276,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -4582,7 +4582,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -5362,22 +5362,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -5411,7 +5411,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -5618,7 +5618,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -5736,7 +5736,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -5929,7 +5929,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -5964,7 +5964,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -6029,7 +6029,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -6056,7 +6056,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -6072,13 +6072,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -6092,10 +6092,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -6104,7 +6104,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -6410,7 +6410,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -7190,22 +7190,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -7239,7 +7239,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -7446,7 +7446,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -7564,7 +7564,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -7757,7 +7757,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -7792,7 +7792,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -7857,7 +7857,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -7884,7 +7884,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -7900,13 +7900,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -7920,10 +7920,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -7932,7 +7932,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -8238,7 +8238,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -9018,22 +9018,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -9067,7 +9067,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -9274,7 +9274,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -9392,7 +9392,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -9585,7 +9585,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -9620,7 +9620,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -9685,7 +9685,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -9712,7 +9712,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -9728,13 +9728,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -9748,10 +9748,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -9760,7 +9760,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -10066,7 +10066,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -10846,22 +10846,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -10895,7 +10895,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -11102,7 +11102,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -11220,7 +11220,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -11413,7 +11413,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -11448,7 +11448,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -11513,7 +11513,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -11540,7 +11540,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -11556,13 +11556,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -11576,10 +11576,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -11588,7 +11588,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -11894,7 +11894,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -12674,22 +12674,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -12723,7 +12723,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -12930,7 +12930,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -13048,7 +13048,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -13241,7 +13241,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -13276,7 +13276,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -13341,7 +13341,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -13368,7 +13368,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -13384,13 +13384,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -13404,10 +13404,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -13416,7 +13416,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -13722,7 +13722,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -14502,22 +14502,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -14551,7 +14551,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -14792,7 +14792,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -14910,7 +14910,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -15103,7 +15103,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -15138,7 +15138,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -15203,7 +15203,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -15230,7 +15230,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -15246,13 +15246,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -15266,10 +15266,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -15278,7 +15278,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -15584,7 +15584,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -16364,22 +16364,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -16413,7 +16413,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -16683,7 +16683,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -16801,7 +16801,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -16994,7 +16994,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -17029,7 +17029,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -17094,7 +17094,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -17121,7 +17121,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -17137,13 +17137,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -17157,10 +17157,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -17169,7 +17169,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -17475,7 +17475,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -18255,22 +18255,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -18304,7 +18304,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -18566,7 +18566,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -18684,7 +18684,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -18877,7 +18877,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -18912,7 +18912,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -18977,7 +18977,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -19004,7 +19004,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -19020,13 +19020,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -19040,10 +19040,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -19052,7 +19052,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -19358,7 +19358,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -20138,22 +20138,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -20187,7 +20187,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -20443,7 +20443,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -20561,7 +20561,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -20754,7 +20754,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -20789,7 +20789,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -20854,7 +20854,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -20881,7 +20881,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -20897,13 +20897,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -20917,10 +20917,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -20929,7 +20929,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -21235,7 +21235,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -22015,22 +22015,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -22064,7 +22064,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -22329,7 +22329,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -22447,7 +22447,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -22640,7 +22640,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -22675,7 +22675,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -22740,7 +22740,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -22767,7 +22767,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -22783,13 +22783,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -22803,10 +22803,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -22815,7 +22815,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -23121,7 +23121,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -23901,22 +23901,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -23950,7 +23950,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -24216,7 +24216,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -24334,7 +24334,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -24527,7 +24527,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -24562,7 +24562,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -24627,7 +24627,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -24654,7 +24654,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -24670,13 +24670,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -24690,10 +24690,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -24702,7 +24702,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -25008,7 +25008,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -25788,22 +25788,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -25837,7 +25837,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -26099,7 +26099,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -26217,7 +26217,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -26410,7 +26410,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -26445,7 +26445,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -26510,7 +26510,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -26537,7 +26537,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -26553,13 +26553,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -26573,10 +26573,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -26585,7 +26585,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -26891,7 +26891,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -27671,22 +27671,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -27720,7 +27720,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -27982,7 +27982,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -28100,7 +28100,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -28293,7 +28293,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -28328,7 +28328,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -28393,7 +28393,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -28420,7 +28420,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -28436,13 +28436,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -28456,10 +28456,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -28468,7 +28468,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -28774,7 +28774,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -29554,22 +29554,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -29603,7 +29603,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -29859,7 +29859,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -29977,7 +29977,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -30170,7 +30170,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -30205,7 +30205,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -30270,7 +30270,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -30297,7 +30297,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -30313,13 +30313,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -30333,10 +30333,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -30345,7 +30345,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -30651,7 +30651,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -31431,22 +31431,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -31480,7 +31480,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -31732,7 +31732,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -31850,7 +31850,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -32043,7 +32043,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -32078,7 +32078,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -32143,7 +32143,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -32170,7 +32170,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -32186,13 +32186,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -32206,10 +32206,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -32218,7 +32218,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -32524,7 +32524,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -33304,22 +33304,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -33353,7 +33353,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -33605,7 +33605,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -33723,7 +33723,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -33916,7 +33916,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -33951,7 +33951,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -34016,7 +34016,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -34043,7 +34043,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -34059,13 +34059,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -34079,10 +34079,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -34091,7 +34091,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -34397,7 +34397,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -35177,22 +35177,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -35226,7 +35226,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -35358,7 +35358,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -35574,7 +35574,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -35692,7 +35692,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -35885,7 +35885,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -35920,7 +35920,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -35985,7 +35985,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -36012,7 +36012,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -36028,13 +36028,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -36048,10 +36048,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -36060,7 +36060,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -36366,7 +36366,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -37146,22 +37146,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -37195,7 +37195,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -37289,7 +37289,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -37424,7 +37424,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -37640,7 +37640,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -37758,7 +37758,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -37951,7 +37951,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -37986,7 +37986,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -38051,7 +38051,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -38078,7 +38078,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -38094,13 +38094,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -38114,10 +38114,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -38126,7 +38126,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -38432,7 +38432,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -39212,22 +39212,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -39261,7 +39261,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -39355,7 +39355,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -39490,7 +39490,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -39706,7 +39706,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -39824,7 +39824,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -40017,7 +40017,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -40052,7 +40052,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -40117,7 +40117,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -40144,7 +40144,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -40160,13 +40160,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -40180,10 +40180,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -40192,7 +40192,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -40498,7 +40498,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -41278,22 +41278,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -41327,7 +41327,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -41421,7 +41421,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -41556,7 +41556,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -41772,7 +41772,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -41890,7 +41890,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -42083,7 +42083,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -42118,7 +42118,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -42183,7 +42183,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -42210,7 +42210,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -42226,13 +42226,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -42246,10 +42246,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -42258,7 +42258,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -42564,7 +42564,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -43344,22 +43344,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -43393,7 +43393,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -43487,7 +43487,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -43622,7 +43622,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -43706,7 +43706,7 @@ "type": "object" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pipeline:latest" }, "storagemanager": { @@ -43842,7 +43842,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -43960,7 +43960,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -44153,7 +44153,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -44188,7 +44188,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -44253,7 +44253,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -44280,7 +44280,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -44296,13 +44296,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -44316,10 +44316,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -44328,7 +44328,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -44634,7 +44634,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -45414,22 +45414,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -45463,7 +45463,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -45557,7 +45557,7 @@ "type": "object" }, "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "demix": { @@ -45641,7 +45641,7 @@ "type": "object" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pipeline:latest" }, "storagemanager": { @@ -45672,7 +45672,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -46084,7 +46084,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -46202,7 +46202,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -46395,7 +46395,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -46430,7 +46430,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -46495,7 +46495,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -46522,7 +46522,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -46538,13 +46538,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -46558,10 +46558,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -46570,7 +46570,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -46876,7 +46876,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -47656,22 +47656,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -47705,7 +47705,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -47775,7 +47775,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/2#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -48079,7 +48079,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -48491,7 +48491,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -48609,7 +48609,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -48802,7 +48802,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -48837,7 +48837,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -48902,7 +48902,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -48929,7 +48929,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -48945,13 +48945,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -48965,10 +48965,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -48977,7 +48977,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -49283,7 +49283,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -50063,22 +50063,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -50112,7 +50112,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -50182,7 +50182,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/4#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -50486,7 +50486,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -50898,7 +50898,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -51016,7 +51016,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -51209,7 +51209,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -51244,7 +51244,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -51309,7 +51309,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -51336,7 +51336,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -51352,13 +51352,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -51372,10 +51372,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -51384,7 +51384,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -51690,7 +51690,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -52470,22 +52470,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -52519,7 +52519,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -52589,7 +52589,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -52893,7 +52893,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -53179,7 +53179,7 @@ "type": "boolean" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pulp:tmss" } }, @@ -53309,7 +53309,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -53427,7 +53427,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -53620,7 +53620,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -53655,7 +53655,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -53720,7 +53720,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -53747,7 +53747,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -53763,13 +53763,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -53783,10 +53783,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -53795,7 +53795,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -54101,7 +54101,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -54881,22 +54881,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -54930,7 +54930,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -55000,7 +55000,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -55286,7 +55286,7 @@ "type": "boolean" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pulp:tmss" } } @@ -55308,7 +55308,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -55602,7 +55602,7 @@ "type": "boolean" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pulp:tmss" } }, @@ -55732,7 +55732,7 @@ "type": "integer" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "relative": { @@ -55850,7 +55850,7 @@ "type": "string" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/9#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 1, @@ -56043,7 +56043,7 @@ "type": "string" }, "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "Manually selected calibrator", "title": "Digital pointing" @@ -56078,7 +56078,7 @@ "type": "integer" }, "integration_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/9#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 1, "description": "Desired integration period (seconds)", "minimum": 0.1, @@ -56143,7 +56143,7 @@ "default": {}, "properties": { "pointing": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "subbands": { @@ -56170,7 +56170,7 @@ "type": "array" }, "antenna_field": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/antenna_field", + "$ref": "#/definitions/antenna_field", "default": "HBA" }, "antenna_set": { @@ -56186,13 +56186,13 @@ "type": "string" }, "lead_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timedelta", + "$ref": "#/definitions/timedelta", "default": 2, "description": "Number of seconds to start before the provided start time, to account for initialising the on-line signal chain, and for possibly negative geometrical delay compensation.", "minimum": 0 }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/10/#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "first_beamlet": { @@ -56206,10 +56206,10 @@ "type": "number" }, "start_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp" + "$ref": "#/definitions/timestamp" }, "stop_time": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/datetime/10#/definitions/timestamp", + "$ref": "#/definitions/timestamp", "default": "2100-01-01T00:00:00Z" }, "HBA": { @@ -56218,7 +56218,7 @@ "default": {}, "properties": { "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/9#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {} }, "DAB_filter": { @@ -56524,7 +56524,7 @@ "properties": { "digital_pointing": { "$id": "#target_pointing", - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/8#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "title": "Digital pointing" }, @@ -57304,22 +57304,22 @@ "default": {}, "properties": { "SAPs": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/SAPs", + "$ref": "#/definitions/SAPs", "default": [ {} ], "minItems": 1 }, "antenna_set": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/antenna_set", + "$ref": "#/definitions/antenna_set", "default": "HBA_DUAL" }, "filter": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/filter", + "$ref": "#/definitions/filter", "default": "HBA_110_190" }, "station_groups": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/stations/7#/definitions/station_groups", + "$ref": "#/definitions/station_groups", "default": [ { "max_nr_missing": 4, @@ -57353,7 +57353,7 @@ ] }, "tile_beam": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pointing/7#/definitions/pointing", + "$ref": "#/definitions/pointing", "default": {}, "description": "HBA only", "title": "Tile beam" @@ -57423,7 +57423,7 @@ }, "properties": { "cluster_resources": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/7#/definitions/cluster_resources", + "$ref": "#/definitions/cluster_resources", "default": {} }, "dspsr": { @@ -57717,7 +57717,7 @@ "type": "boolean" }, "software_version": { - "$ref": "https://tmss.lofar.eu/api/schemas/commonschematemplate/pipeline/9#/definitions/software_version", + "$ref": "#/definitions/software_version", "default": "lofar-pulp:tmss" } } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/permission.stack.handler.js b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/permission.stack.handler.js index 8f9036d3331671e80fae9a7cab6f1692b9393981..3d505c312694728995ec6336e14d4c12e028fd8a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/authenticate/permission.stack.handler.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/authenticate/permission.stack.handler.js @@ -3,7 +3,6 @@ import AuthService from '../services/auth.service'; import _ from 'lodash'; import axios from 'axios'; -let isPermissionValidated = false const PermissionStackUtil = { @@ -13,7 +12,6 @@ const PermissionStackUtil = { * @returns */ getPermissions: async(loadPermission) => { - console.log("getPermissions", isPermissionValidated) let permissionStack = {} permissionStack = localStorage.getItem("permissionStack"); if (permissionStack) { @@ -21,7 +19,6 @@ const PermissionStackUtil = { if (permissionStack?.token === axios.defaults.headers.common['Authorization']) { if(permissionStack?.token!==undefined) { - console.log("Returning with permissionstack",permissionStack) loadPermission=false } } @@ -29,7 +26,6 @@ const PermissionStackUtil = { if (loadPermission) { permissionStack = await PermissionStackUtil.getAPIBasedPermission(); - console.log("permissionStack after retrieval",isPermissionValidated,permissionStack) permissionStack.token = axios.defaults.headers.common['Authorization']; localStorage.setItem("permissionStack", JSON.stringify(permissionStack)); } @@ -69,7 +65,7 @@ const PermissionStackUtil = { allowedPermission = response } if (allowedPermission) { - if (module === 'project') { + if (module === 'project' || module === 'cycle') { permissionStack[module] ={ list: _.includes(allowedPermission, 'GET'), create: _.includes(allowedPermission, 'PUT'), @@ -101,13 +97,6 @@ const PermissionStackUtil = { permissionStack['scheduleunit_draft']['scheduling_set'] = _.includes(allowedPermission, 'POST'); permissionStack['scheduleunit']['create'] = _.includes(allowedPermission, 'POST'); } - else if(module === 'cycle') { - permissionStack[module] ={ - list: _.includes(allowedPermission, 'GET'), - create: _.includes(allowedPermission, 'PUT'), - edit: _.includes(allowedPermission, 'PATCH'), - delete: _.includes(allowedPermission, 'DELETE')}; - } else if(module === 'task_draft' || module === 'task_blueprint'){ permissionStack['task'] ={ list: _.includes(allowedPermission, 'GET'), diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js index 96f6f98a20ce230bbe882195b1f7b04c85c83cbe..f709504734c145a0480933c2a1f32e7c0cceaeec 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/JSONEditor/JEditor.js @@ -167,6 +167,7 @@ function Jeditor(props) { return parseFloat(frequency).toFixed(1); } + const subband2frequencyRange = (subband1, subband2, bandpassFilter) => { let min_frequency = subband2frequencyMinimum(subband1, bandpassFilter); let max_frequency = subband2frequencyMaximum(subband2, bandpassFilter); @@ -175,7 +176,7 @@ function Jeditor(props) { const init = async () => { const element = document.getElementById(props.id?props.id:'editor_holder'); - if (element.firstChild) { + if (element?.firstChild) { element.removeChild(element.firstChild); } let schema = (props.resolveExtRef===undefined || props.resolveExtRef)?await resolveExternalRef():props.schema; @@ -411,21 +412,20 @@ function Jeditor(props) { // Remove loader div after editor intialization const loadingElement = document.getElementById(props.id?`${props.id}_loader`:'editor_holder_loader'); - if (loadingElement.firstChild) { + if (loadingElement?.firstChild) { loadingElement.removeChild(loadingElement.firstChild); } - // editor.getEditor('root').disable(); editorRef.current = editor; - editor.on('ready',() => { + editor?.on('ready',() => { if (props.disabled) { - editor.disable(); + editor?.disable(); } if (props.parentFunction) { props.parentFunction(editorFunction); } }); - editor.on('change',() => { + editor?.on('change',() => { setEditorOutput(); }); // Called when a row is deleted @@ -619,7 +619,7 @@ function Jeditor(props) { } } - while (element.childNodes.length > 1) { + while (element?.childNodes.length > 1) { element.removeChild(element.firstChild); } // To disable any specific fields in the editor, pass them from the parent component. @@ -963,7 +963,7 @@ function Jeditor(props) { * Function to format the input for custom fields when the editor receive the inital values from the parent component * @param {*} editorInput */ - function updateInput(editorInput) { + function updateInput(editorInput , originalInput =null) { for (const inputKey in editorInput) { const inputValue = editorInput[inputKey]; if (inputValue instanceof Object) { @@ -974,14 +974,14 @@ function Jeditor(props) { else if ((inputKey.toLowerCase() === 'subbands' && inputValue instanceof Array) || (inputKey.toLowerCase() === 'list' && inputValue instanceof Array)) { editorInput[inputKey] = getSubbandInput(inputValue); - editorInput['frequency'] = subband2frequencyRange; + editorInput['frequency'] = getFrequencyFromSubbandOutput([editorInput[inputKey]],originalInput?.station_configuration?.filter); // --> Here was written : subband2frequencyRange; , But that is really strange, so i reverted the original null. } else if (inputKey.toLowerCase() === 'average' && props.targetObservation) { inputValue['time_resolution'] = getTimeResolution('dummy', inputValue['time_steps']); inputValue['frequency_resolution'] = getFrequencyResolution('dummy', inputValue['frequency_steps']); - updateInput(inputValue); + updateInput(inputValue,originalInput || editorInput); } else { - updateInput(inputValue); + updateInput(inputValue,originalInput ||editorInput); } } else if (inputKey.toLowerCase() === 'channels_per_subband') { @@ -1090,12 +1090,8 @@ function Jeditor(props) { * @returns Number - calculated value */ function getFrequencyResolution(channelsPerSubband, freqSteps) { - if (props.observationType && props.observationType.indexOf('observation') >= 0) { - /* if (props.observationType.toLowerCase() === 'beamforming observation') { - return (clockValue / 1024 * channelsPerSubband * 1/1000).toFixed(2); - } else if (props.observationType.toLowerCase() === 'target observation') {*/ + if (props.observationType?.indexOf('observation') >= 0) { return (clockValue / 1024 / channelsPerSubband * 1/1000).toFixed(2); - // } } else if (props.targetObservation) { const specification = props.targetObservation.specifications_doc; return (clockValue / 1024 / (specification['correlator']?specification['correlator']['channels_per_subband']:specification['target']['correlator']['channels_per_subband']) * freqSteps / 1000).toFixed(2); @@ -1126,7 +1122,7 @@ function Jeditor(props) { * @returns Number - calculated value */ function getPipelineFrequencyResolution(channelsPerPart, isDigifil) { - if (props.observationType && props.observationType.indexOf('pulsar') >= 0) { + if (props.observationType?.indexOf('pulsar') >= 0) { if (isDigifil) { return singlePulseSearch?(clockValue / 1024 / (channelsPerPart/props.targetObservation.specifications_doc.beamformer.pipelines[0].coherent.settings.subbands_per_file)).toFixed(2):'N/A'; } else { @@ -1144,11 +1140,68 @@ function Jeditor(props) { * @returns Number calculated value */ function getPipelineTimeResolution(channelsPerPart, timeIntegrationSteps) { - if (props.observationType && props.observationType.indexOf('pulsar') >= 0) { + if (props.observationType?.indexOf('pulsar') >= 0) { return singlePulseSearch?(1/channelsPerPart * props.targetObservation.specifications_doc.beamformer.pipelines[0].coherent.settings.time_integration_factor * timeIntegrationSteps):'N/A'; } } + + + +/** + * Validates if the subband list custom field + * @param {array} subbandArray + * * @param {String} bandpassFilter , this is comming from the station_configuration.filter + */ +function getFrequencyFromSubbandOutput(subbandArray,bandpassFilter) { + try { + + let frequencyValues = "" + for (const subband of subbandArray) { + const subbandRange = subband.split('..'); + if (subbandRange.length > 1) { + const firstVal = parseInt(subbandRange[0]); + const nextVal = parseInt(subbandRange[1]); + if ( nextVal <= 511 ) { + if (firstVal === 0 || firstVal < nextVal) { + if(frequencyValues) { + frequencyValues = frequencyValues + ',' + subband2frequencyRange(firstVal, nextVal, bandpassFilter); + } else { + frequencyValues = subband2frequencyRange(firstVal, nextVal, bandpassFilter); + } + } else { + return ""; + } + } else { + return ""; + } + } + else { + if (isNaN(parseInt(subbandRange[0]))) { + return ""; + } + if (parseInt(subbandRange[0]) < 0 || parseInt(subbandRange[0]) > 511) { + return ""; + } + if(frequencyValues) { + frequencyValues = frequencyValues + ',' + subband2frequencyCenter(parseInt(subbandRange[0]), bandpassFilter).toString(); + } else { + frequencyValues = subband2frequencyCenter(parseInt(subbandRange[0]), bandpassFilter).toString(); + } + } + } + return frequencyValues + } catch (exception) { + return ""; + } + +} + + + + + + /** * Validates if the subband list custom field * @param {String} prpOutput @@ -1161,8 +1214,7 @@ function Jeditor(props) { if(path[path.indexOf('list')]) path[path.indexOf('list')] = 'frequency'; path = path.join('.') const subbandArray = prpOutput.split(","); - let bandpassFilter = editorRef.current && editorRef.current.getValue() && editorRef.current.getValue().station_configuration ? (editorRef.current.getValue().station_configuration.filter || editorRef.current.getValue().station_configuration?.filter || null) : null; - // let bandpassFilter = editorRef.current.getValue() ? editorRef.current.getValue().filter : null; + let bandpassFilter = editorRef.current?.getValue()?.station_configuration ? (editorRef.current.getValue().station_configuration.filter || editorRef.current.getValue().station_configuration?.filter || null) : null; let frequencyValues = null for (const subband of subbandArray) { const subbandRange = subband.split('..'); @@ -1206,11 +1258,7 @@ function Jeditor(props) { return false; } } catch (exception) { - if(exception.message === "JSON Editor not ready yet. Listen for 'ready' event before getting the value") { - return true; - } - - return false; + return exception.message === "JSON Editor not ready yet. Listen for 'ready' event before getting the value"; } return true; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js index 533d4af8dfe3f6f2d26b0266d66e2bae47b2338e..137b84362f2be4f630888acdab9192c4fe45953b 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/components/ViewTable.js @@ -1914,7 +1914,7 @@ const IndeterminateCheckbox = React.forwardRef( const defaultRef = React.useRef() const resolvedRef = ref || defaultRef React.useEffect(() => { - resolvedRef.current.indeterminate = indeterminate + if (resolvedRef?.current!==undefined) resolvedRef.current.indeterminate = indeterminate }, [resolvedRef, indeterminate]) return <input type="checkbox" ref={resolvedRef} {...rest}/> } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss index e2d5e39598f80ff5b41c4c81b32580ae929365be..f8016cab008b436000ad689a1a08d65c75055430 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss +++ b/SAS/TMSS/frontend/tmss_webapp/src/layout/sass/_timeline.scss @@ -308,6 +308,7 @@ $vh: 1vh; .timesteps-container { margin-right: 1rem; + margin-top:10px; } .move-container { @@ -1045,4 +1046,22 @@ body .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container line-height: initial; } } + +} + +.DayWeekDropDown{ + + font-size: 12px !important; + float: left; + height: 29px; + line-height: 24px; + margin-bottom: 5px; + .p-dropdown-label{ + font-size: 12px ; + } + width: 175px; +} + +.JumpToSuid { + margin-top:31px; } \ No newline at end of file diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.content.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.content.test.js.snap index 58499ab6491e7b3a2dd56d390d03bc9a2caacc23..181d7a1a49bddb1c90cb19888a6b588e5f9efcc5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.content.test.js.snap +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.content.test.js.snap @@ -444,7 +444,80 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "completionLevel": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "failedTime": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "ltaStorage": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "noOfTriggers": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "observingTime": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "prioSuccessTime": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "processingTime": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -1183,7 +1256,53 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "failed": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "filler": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "idle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "reg_ddt_comm": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -1834,7 +1953,35 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "efficiency": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "target": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -2360,7 +2507,44 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "performed": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "prognosis": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "target": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -2990,7 +3174,80 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "ddt_com_rep": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "failed": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "idle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "prio_A": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "prio_B": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "tmss_comm": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "unavailable": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -4137,7 +4394,26 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "Cycle 20 Efficiency %": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "Week Index": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -7620,7 +7896,44 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "juelich": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "poznan": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "sara": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -8148,7 +8461,53 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "preprocIF": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "pulpBF": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "rawBF": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "rawIF": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -9278,7 +9637,71 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "dataToJuelich": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "dataToPoznan": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "dataToSara": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "durationObserved": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "durationProcessed": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "project": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -17008,7 +17431,62 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "idle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "ilt_mode_dutch": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "ilt_total": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "local_mode": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "observing": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -17794,7 +18272,35 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "duration": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "month": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, @@ -19024,7 +19530,35 @@ exports[`Render Contents renders correctly with data 1`] = ` }, "state": Object { "columnOrder": Array [], - "d_filters": Object {}, + "d_filters": Object { + "cycle": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "duration": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "period": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, "d_rows": null, "editingMeta": Object {}, "filters": null, diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.main.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.main.test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..54e5c1e47196c49526a1b06581a77fcafa8a130f --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/__snapshots__/report.main.test.js.snap @@ -0,0 +1,279 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Render Contents renders correctly with data 1`] = ` +<div + className="report-toolbar p-grid" + style={ + Object { + "borderBottom": "1px solid lightgrey", + "marginTop": "10px", + "paddingBottom": "10px", + } + } +> + <label + className="col-lg-1 col-md-2 col-sm-12" + htmlFor="cycle" + > + Cycle + </label> + <span + className="p-autocomplete p-component p-inputwrapper p-autocomplete-multiple p-inputwrapper-filled col-lg-4 col-md-4 col-sm-12" + data-pc-name="autocomplete" + data-pc-section="root" + id="pr_id_8" + style={Object {}} + > + <ul + className="p-autocomplete-multiple-container p-component p-inputtext" + data-pc-section="container" + onClick={[Function]} + onContextMenu={null} + onDoubleClick={null} + onMouseDown={null} + > + <li + className="p-autocomplete-input-token" + data-pc-section="inputtoken" + > + <input + aria-autocomplete="list" + aria-controls={null} + aria-expanded={false} + aria-haspopup="listbox" + autoComplete="off" + className="" + data-pc-section="input" + disabled={false} + id={null} + maxLength={null} + name={null} + onBlur={[Function]} + onChange={[Function]} + onFocus={[Function]} + onKeyDown={[Function]} + onKeyPress={null} + onKeyUp={null} + placeholder={null} + readOnly={false} + role="combobox" + style={Object {}} + tabIndex={null} + type="text" + /> + </li> + </ul> + </span> + <label + className="col-lg-2 col-md-2 col-sm-12" + htmlFor="period" + style={ + Object { + "paddingRight": "0px", + } + } + > + For Period + </label> + <div + className="col-lg-3 col-md-3 col-sm-12 report-calendar" + > + <span + className="p-calendar p-component p-inputwrapper p-inputwrapper-filled" + data-pc-name="calendar" + data-pc-section="root" + id={null} + style={Object {}} + > + <input + aria-labelledby={null} + autoComplete="off" + className="p-inputtext p-component" + data-pc-name="inputtext" + data-pc-section="root" + disabled={false} + id={null} + inputMode="none" + name={null} + onBeforeInput={[Function]} + onBlur={[Function]} + onFocus={[Function]} + onInput={[Function]} + onKeyDown={[Function]} + onPaste={[Function]} + placeholder={null} + readOnly={false} + required={false} + style={Object {}} + tabIndex={null} + type="text" + /> + </span> + </div> + <div + className="ReportButtonArray" + > + <button + className="p-button p-component ReportButton p-button-icon-only p-disabled" + data-pc-name="button" + data-pc-section="root" + disabled={true} + onClick={[Function]} + > + <span + className="p-button-icon p-c pi pi-check" + data-pc-section="icon" + /> + <span + className="p-button-label p-c" + dangerouslySetInnerHTML={ + Object { + "__html": " ", + } + } + /> + </button> + <button + className="p-button p-component ReportButton p-button-icon-only" + data-pc-name="button" + data-pc-section="root" + disabled={false} + onClick={[Function]} + style={ + Object { + "marginLeft": "10px", + } + } + > + <span + className="p-button-icon p-c pi pi-undo" + data-pc-section="icon" + /> + <span + className="p-button-label p-c" + dangerouslySetInnerHTML={ + Object { + "__html": " ", + } + } + /> + </button> + </div> +</div> +`; + +exports[`Render Contents renders without errors without data 1`] = ` +<div + style={ + Object { + "display": "flex", + "height": "100", + "justifyContent": "center", + "width": "100%", + } + } +> + <div + aria-busy={true} + aria-label="three-dots-loading" + data-testid="three-dots-loading" + role="status" + style={ + Object { + "display": "flex", + } + } + > + <svg + data-testid="three-dots-svg" + fill="#004B93" + height={80} + viewBox="0 0 120 30" + width={80} + xmlns="http://www.w3.org/2000/svg" + > + <circle + cx="15" + cy="15" + r={15} + > + <animate + attributeName="r" + begin="0s" + calcMode="linear" + dur="0.8s" + from="15" + repeatCount="indefinite" + to="15" + values="15;9;15" + /> + <animate + attributeName="fill-opacity" + begin="0s" + calcMode="linear" + dur="0.8s" + from="1" + repeatCount="indefinite" + to="1" + values="1;.5;1" + /> + </circle> + <circle + attributeName="fill-opacity" + cx="60" + cy="15" + from="1" + r={9} + to="0.3" + > + <animate + attributeName="r" + begin="0s" + calcMode="linear" + dur="0.8s" + from="9" + repeatCount="indefinite" + to="9" + values="9;15;9" + /> + <animate + attributeName="fill-opacity" + begin="0s" + calcMode="linear" + dur="0.8s" + from="0.5" + repeatCount="indefinite" + to="0.5" + values=".5;1;.5" + /> + </circle> + <circle + cx="105" + cy="15" + r={15} + > + <animate + attributeName="r" + begin="0s" + calcMode="linear" + dur="0.8s" + from="15" + repeatCount="indefinite" + to="15" + values="15;9;15" + /> + <animate + attributeName="fill-opacity" + begin="0s" + calcMode="linear" + dur="0.8s" + from="1" + repeatCount="indefinite" + to="1" + values="1;.5;1" + /> + </circle> + </svg> + </div> +</div> +`; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js index a9e43d3f63a604d39608c78ed7c8f4ba341d765d..a3803cb28824377baceabbbff8d68ef6dd259f2a 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.js @@ -53,7 +53,6 @@ const CycleReportMain = forwardRef(() => { const FetchAllCyclesWithQuota = () => { CycleService.getAllCyclesWithQuota().then( cycles => { - console.log(cycles); setCycles(cycles); setPageLoading(false); }); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.test.js new file mode 100644 index 0000000000000000000000000000000000000000..aa0f34dffbfdd65c52029af1724d4d4395a92ff3 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/report.main.test.js @@ -0,0 +1,32 @@ +import CycleReportMain from "./report.main" +import renderer, { act } from 'react-test-renderer'; +import listCycle from './testdata/test.cycle.expand.json' +import axios from "axios"; +import MockAdapter from 'axios-mock-adapter'; + + +function MakePrimaryMock() { + let mock = new MockAdapter(axios); + mock.onGet("/api/cycle?expand=quota").reply(200, listCycle); +} +describe('Render Contents', () => { + it("renders without errors without data", () => { + const page = renderer + .create(<CycleReportMain> </CycleReportMain>) + .toJSON(); + expect(page).toMatchSnapshot(); + }); + + it('renders correctly with data', async () => { + MakePrimaryMock(); + + let page; + await act(async () => { + page = renderer + .create(<CycleReportMain> </CycleReportMain>); + }); + + // Now `page` should be defined + expect(page.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/testdata/test.cycle.expand.json b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/testdata/test.cycle.expand.json new file mode 100644 index 0000000000000000000000000000000000000000..3f061e50332919575f5c9fa81e9eaa0190106975 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/cycle/testdata/test.cycle.expand.json @@ -0,0 +1,43 @@ +{ + "count": 1, + "next": null, + "previous": null, + "results": [ + { + "name": "Cycle 20", + "url": "https://tmss.lofar.eu/api/cycle/Cycle%2020", + "created_at": "2023-05-26T07:28:37.798390", + "description": "Lofar Cycle 20", + "duration": 31622399.0, + "projects": [ + "https://tmss.lofar.eu/api/project/TSER_001", + "https://tmss.lofar.eu/api/project/TMSS-validation" + + ], + "projects_ids": [ + "LT16_004", + "TMSS-validation" + + ], + "quota": [ + { + "id": 142, + "url": "https://tmss.lofar.eu/api/cycle_quota/142", + "cycle": "https://tmss.lofar.eu/api/cycle/Cycle%2020", + "cycle_id": "Cycle 20", + "resource_type": "https://tmss.lofar.eu/api/resource_type/CEP%20Processing%20Time", + "resource_type_id": "CEP Processing Time", + "value": 0.0 + } + + ], + "quota_ids": [ + 142 + ], + "start": "2023-06-01T00:00:00", + "stop": "2024-05-31T23:59:59", + "tags": [], + "updated_at": "2023-10-30T10:31:23.283293" + } + ] +} \ No newline at end of file diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.js index fd544f48eba66bce6d546bbca348ce2472ce72c3..44facbbad06867afa1c2ee07832175c0083d2f1e 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Report/project.report.js @@ -207,7 +207,7 @@ class ProjectReport extends Component { }, tooltip: { callbacks: { - label: function(tooltipItem, data) { + label: function(tooltipItem) { const itemData = _.find(targetReports, ['name', tooltipItem.label]); return `${itemData?itemData.exposure:""} hrs`; } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js index e9a80124b795296d865a09fd8c1c30da0e6a73ec..7adfae56baca91cf8c1eb923d72ed55b04d34795 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/excelview.schedulingset.js @@ -858,7 +858,7 @@ export class SchedulingSetCreate extends Component { this.agSUWithDefaultValue['ref_pointing_angle1'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.angle1 ? UnitConverter.getAngleInput(observStrategyContraints.sky.reference_pointing.pointing.angle1, false) : UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle1, false); this.agSUWithDefaultValue['ref_pointing_angle2'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.angle2 ? UnitConverter.getAngleInput(observStrategyContraints.sky.reference_pointing.pointing.angle2, true) : UnitConverter.getAngleInput(this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.angle2, true); this.agSUWithDefaultValue['ref_pointing_direction_type'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.direction_type || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.direction_type; - this.agSUWithDefaultValue['ref_pointing_target'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.target || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.target || this.resolvedConstraintSchema.definitions.pointing.properties.target.default; + this.agSUWithDefaultValue['ref_pointing_target'] = observStrategyContraints?.sky?.reference_pointing?.pointing?.target || this.resolvedConstraintSchema.properties.sky.properties.reference_pointing.properties.pointing.default.target || this.resolvedConstraintSchema.definitions?.pointing?.properties?.target?.default; } this.agSUWithDefaultValue['md_sun'] = observStrategyContraints?.sky?.min_distance && !isNaN(observStrategyContraints.sky.min_distance.sun) ? ((observStrategyContraints.sky.min_distance.sun * 180) / Math.PI).toFixed(2) : ((this.resolvedConstraintSchema.properties.sky.properties.min_distance.properties.sun.default * 180) / Math.PI).toFixed(2); this.agSUWithDefaultValue['md_moon'] = observStrategyContraints?.sky?.min_distance && !isNaN(observStrategyContraints.sky.min_distance.moon) ? ((observStrategyContraints.sky.min_distance.moon * 180) / Math.PI).toFixed(2) : ((this.resolvedConstraintSchema.properties.sky.properties.min_distance.properties.moon.default * 180) / Math.PI).toFixed(2); @@ -2020,7 +2020,7 @@ export class SchedulingSetCreate extends Component { field: 'ref_pointing_direction_type', cellEditor: 'agSelectCellEditor', cellEditorParams: { - values: this.resolvedConstraintSchema.definitions.pointing.properties.direction_type.enum, + values: this.resolvedConstraintSchema?.definitions?.pointing?.properties?.direction_type?.enum, } }, {headerName: 'Target', headerTooltip: 'Refernce Pointing - Target', field: 'ref_pointing_target'} @@ -2308,7 +2308,7 @@ export class SchedulingSetCreate extends Component { if (!column) { column = {header: _.capitalize(colDefkey)}; } - if (rowData.hasOwnProperty(colDefkey)) { + if (rowData[colDefkey]!==undefined) { const defProperty = columnDefinition[colDefkey]; if (defProperty.hasOwnProperty('required') && defProperty.required) { if (_.isEmpty(rowData[colDefkey] + '')) { @@ -2316,7 +2316,7 @@ export class SchedulingSetCreate extends Component { isValidRow = false; } } - if (defProperty.hasOwnProperty('type')) { + if (defProperty.type!==undefined) { if (rowData[colDefkey] && typeof rowData[colDefkey] === 'string') { rowData[colDefkey] = rowData[colDefkey].trim() } @@ -2324,19 +2324,19 @@ export class SchedulingSetCreate extends Component { errorMsg += column.headerName + ", "; isValidRow = false; } else { - if (defProperty.hasOwnProperty('minimum')) { + if (defProperty.minimum!==undefined) { if (rowData[colDefkey] < defProperty.minimum) { errorMsg += column.headerName + ", "; isValidRow = false; } } - if (defProperty.hasOwnProperty('maximum')) { + if (defProperty.maximum!==undefined) { if (rowData[colDefkey] > defProperty.maximum) { errorMsg += column.headerName + ", "; isValidRow = false; } } - if (defProperty.hasOwnProperty('enum')) { + if (defProperty.enum!==undefined) { let containsAll = true; if (rowData[colDefkey] && rowData[colDefkey] !== '' && rowData[colDefkey].length > 0 && defProperty.hasOwnProperty('multiselect') && defProperty.multiselect) { if (typeof rowData[colDefkey] !== 'object') { @@ -2359,7 +2359,7 @@ export class SchedulingSetCreate extends Component { isValidRow = false; } } - if (defProperty.hasOwnProperty('format')) { + if (defProperty.format!==undefined) { if (defProperty.format === '-hh:mm:ss') { const result = Validator.validateTransitOffset(defProperty, rowData[colDefkey], {}, null); if (!_.isEmpty(result)) { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.helper.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.helper.js index 7ab450e73510f22a6ca9f6ed43c50a3b5b2a5c1a..b956af9442142650b8125db28079927e95cea7a5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.helper.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Scheduling/summary.helper.js @@ -37,7 +37,7 @@ export function formatNestedTimeObject(timeArray) { * @return {*} updated constraintTemplate */ export function cleanTimePropertiesOfConstraintTemplate(constraintTemplate) { - if (constraintTemplate.hasOwnProperty('time')) { + if (constraintTemplate.time!==undefined) { constraintTemplate = deleteInvalidProperties(['at', 'after', 'before'], constraintTemplate) for (const type in constraintTemplate.time) { const timeElement = constraintTemplate.time[type]; @@ -60,7 +60,7 @@ export function cleanTimePropertiesOfConstraintTemplate(constraintTemplate) { * @return {{sky}|*} updated constraintTemplate */ export function cleanSkyPropertiesOfConstraintTemplate(constraintTemplate) { - if (constraintTemplate.hasOwnProperty('sky')) { + if (constraintTemplate.sky!==undefined) { if (constraintTemplate.sky.transit_offset) { constraintTemplate.sky.transit_offset.from = UnitConversion.getHHmmssToSecs(constraintTemplate.sky.transit_offset.from); constraintTemplate.sky.transit_offset.to = UnitConversion.getHHmmssToSecs(constraintTemplate.sky.transit_offset.to); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Station/StationGeoView.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Station/StationGeoView.js index b2a34208a3ae80afa53ef51747ce312f649d93aa..7c97aabc502604647f5ffb7a6d39ece93c8f1163 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Station/StationGeoView.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Station/StationGeoView.js @@ -47,7 +47,7 @@ function StationGeoView(props) { url="https://tile.openstreetmap.org/{z}/{x}/{y}.png" /> - {stations.map((station, index) => { + {stations.map((station ) => { const markerPosition = [ station.geometry.coordinates[1], station.geometry.coordinates[0], diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js index a3feb9fba1f88c183b49aa00a05a35c6792fe468..643e748d23ab78e5475f152a6a11583a1c22ef4d 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/edit.test.js @@ -45,7 +45,7 @@ const setMockSpy = ( () => { subtaskTypesSpy = jest.spyOn(TaskService, 'getSubtaskType'); subtaskTypesSpy.mockImplementation(() => {return Promise.resolve(TaskServiceMock.subTaskTypes)}); taskDetailsSpy = jest.spyOn(TaskService, 'getTaskDetails'); - taskDetailsSpy.mockImplementation((taskType, taskId, fetchSubtask) => { + taskDetailsSpy.mockImplementation((taskType, taskId ) => { if (taskType === "draft") { const taskDraftslist = TaskServiceMock.taskDrafts; return Promise.resolve(_.find(taskDraftslist, {"id": parseInt(taskId)})); @@ -1578,8 +1578,7 @@ it("Checking Correctness of Custom fields in JEditor using Simple Beamforming Ob await act( async() => { fireEvent.change(angle1El, { target: { value: '72h31m49.09s' } }); await new Promise((r) => setTimeout(r, 150)); - 'how to make this work' - }); + }); expect(content.getByText("Not a valid input. Mimimum: 00:00:00.0000hours or 0 or 00:00:00.0000degrees, Maximum:23:59:59.9999hours or 6.2831 or 359:59:59.9999degrees.")).toBeVisible(); expect(content.queryByTestId('save-btn')).toBeDisabled(); await act( async() => { diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js index c0df3f17c1ab6ec1a5fd33f441bdb516a7230d86..21c00712292da1b7eb40da49cbdb5f023b10285f 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.js @@ -464,8 +464,7 @@ export class TaskView extends Component { } this.selectedRows = []; - return <> - <div style={{marginTop: '1em'}}> + return <div style={{marginTop: '1em'}}> {selectedSubtasksWithoutObsolete.length>0 && <> <b>Subtask(s) that can be marked as obsolete</b> @@ -486,7 +485,6 @@ export class TaskView extends Component { </>} </div> - </> } getSubtaskRestartConfirmContent() { @@ -506,8 +504,7 @@ export class TaskView extends Component { } this.selectedRows = []; - return <> - <div style={{marginTop: '1em'}}> + return <div style={{marginTop: '1em'}}> {selectedSubtaskWithOnhold.length>0 && <> <b>Subtask(s) that will be queued to restart</b> @@ -528,7 +525,6 @@ export class TaskView extends Component { </>} </div> - </> } /** * Content for status dialog after cancelling subtask @@ -560,28 +556,24 @@ export class TaskView extends Component { */ getSubtaskObsoleteStatusContent() { this.selectedRows = []; - return <> - <div style={{marginTop: '1em'}}> + return <div style={{marginTop: '1em'}}> <DataTable value={this.state.obsoleteTasks} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="id" header="Subtask Id"></Column> <Column field="type" header="Type"></Column> <Column field="actionStatus" header="Action Status"></Column> </DataTable> </div> - </> } getSubtaskRestartStatusContent() { this.selectedRows = []; - return <> - <div style={{marginTop: '1em'}}> + return <div style={{marginTop: '1em'}}> <DataTable value={this.state.restartSubTasks} resizableColumns columnResizeMode="expand" className="card" style={{ paddingLeft: '0em' }}> <Column field="id" header="Subtask Id"></Column> <Column field="type" header="Type"></Column> <Column field="actionStatus" header="Action Status"></Column> </DataTable> </div> - </> } /** @@ -979,9 +971,6 @@ export class TaskView extends Component { ))} </ul> ); - - const subtaskMenu=[]; - subtaskMenu.push() return ( <React.Fragment> {this.state.permissionById[this.state.taskId] && @@ -991,7 +980,6 @@ export class TaskView extends Component { <PageHeader location={this.props.location} title={'Task - Details'} actions={this.state.actions}/> { this.state.isLoading? <AppLoader /> : this.state.task && - <React.Fragment> <div className="main-content"> <div className="p-grid"> <label className="col-lg-2 col-md-2 col-sm-12">Name</label> @@ -1025,10 +1013,10 @@ export class TaskView extends Component { <label className="col-lg-2 col-md-2 col-sm-12">Scheduling Unit</label> <Link className="col-lg-4 col-md-4 col-sm-12" to={ { pathname:this.state.supath, state: {id: this.state.schedulingUnit.id}}}>{this.state.schedulingUnit?this.state.schedulingUnit.name:''}</Link> </>} - <> + <label className="col-lg-2 col-md-2 col-sm-12">Short Description</label> <span className="col-lg-4 col-md-4 col-sm-12">{this.state.task.short_description}</span> - </> + {this.state.taskType === 'blueprint' && <> <label className="col-lg-2 col-md-2 col-sm-12">Status</label> @@ -1094,7 +1082,6 @@ export class TaskView extends Component { <div className="delete-option"> <div > <span className="p-float-label"> - <> <button className="p-link" href="#" style={{ marginLeft: '8px'}} onClick={this.showSubtaskRestartConfirmation} title={`Restart subtask (s)`}> <i className={`fa fa-sync`} aria-hidden="true" ></i> @@ -1107,7 +1094,6 @@ export class TaskView extends Component { title={this.state.subtaskPermission.obsolete?'Mark as Obsolete': `${this.access_denied_message} to mark as obsolete`}> <i className={`far fa-times-circle ${!this.state.subtaskPermission.obsolete?'fa-disabled':''}`} aria-hidden="true" ></i> </button> - </> </span> </div> </div> @@ -1137,7 +1123,6 @@ export class TaskView extends Component { </div> </div> - </React.Fragment> } <CustomDialog type="confirmation" visible={this.state.confirmDialogVisible} width={this.state.dialog.width} header={this.state.dialog.header} message={this.state.dialog.detail} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js index 71e0034f5a2bc68dd7b8b3a36b87716af8410ba4..66924d305b8d49f302d20e412b1c9f22b2988cf5 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Task/view.test.js @@ -47,7 +47,7 @@ const setMockSpy = (() => { subtaskTypesSpy = jest.spyOn(TaskService, 'getSubtaskType'); subtaskTypesSpy.mockImplementation(() => { return Promise.resolve(TaskServiceMock.subTaskTypes) }); taskDetailsSpy = jest.spyOn(TaskService, 'getTaskDetails'); - taskDetailsSpy.mockImplementation((taskType, taskId, fetchSubtask) => { + taskDetailsSpy.mockImplementation((taskType, taskId ) => { if (taskType === "draft") { return Promise.resolve(_.find(TaskServiceMock.taskDrafts, { "id": parseInt(taskId) })); } else { @@ -60,7 +60,7 @@ const setMockSpy = (() => { return Promise.resolve(template); }); schedulingUnitSpy = jest.spyOn(TaskService, "getSchedulingUnit"); - schedulingUnitSpy.mockImplementation((type, id, loadTasks) => { + schedulingUnitSpy.mockImplementation((type, id ) => { if (type === "draft") { return Promise.resolve(_.find(TaskServiceMock.schedulingUnitDrafts, { "id": id })); } else { @@ -77,1435 +77,1440 @@ const clearMockSpy = (() => { taskTemplateSpy.mockRestore(); schedulingUnitSpy.mockRestore(); }); - -it("renders Task details page", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" /></Router>); +describe('Task Renderers ', () => { + it("renders Task details page", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" /></Router>); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); -}); -it("test Combined Observation Task Draft view of IM LBA Survey - 3 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" key="CombinedTest" /></Router>); - await new Promise((r) => setTimeout(r, 5000)); + it("test Combined Observation Task Draft view of IM LBA Survey - 3 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "9", type: "draft" } }} history={{}} location="/task/view/draft/9" key="CombinedTest" /></Router>); + await new Promise((r) => setTimeout(r, 5000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getByText("IM LBA Survey - 3 Beams")).toBeInTheDocument(); + expect(content.getByText("OOO.O Paaa+01 Paaa+02 Paaa+03")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); + expect(content.getByText("Cleanup")).toBeInTheDocument(); + expect(content.getByText("Pipeline target3")).toBeInTheDocument(); + expect(content.getByText("Pipeline target2")).toBeInTheDocument(); + expect(content.getByText("Pipeline target1")).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); + await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument()); + await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument()); + await waitFor(() => expect(content.getAllByText("Reference frame").length).toBe(5)); + await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[duration]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByText("Storage cluster")).toBeInTheDocument()); + await waitFor(() => expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument()); + await waitFor(() => expect(content.getByText("Channels/subband")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument()); + await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument()); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station groups")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getByText("IM LBA Survey - 3 Beams")).toBeInTheDocument(); - expect(content.getByText("OOO.O Paaa+01 Paaa+02 Paaa+03")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); - expect(content.getByText("Cleanup")).toBeInTheDocument(); - expect(content.getByText("Pipeline target3")).toBeInTheDocument(); - expect(content.getByText("Pipeline target2")).toBeInTheDocument(); - expect(content.getByText("Pipeline target1")).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); - await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument()); - await waitFor(() => expect(content.getByText("Auto-select")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument()); - await waitFor(() => expect(content.getAllByText("Reference frame").length).toBe(5)); - await waitFor(() => expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[duration]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByText("Storage cluster")).toBeInTheDocument()); - await waitFor(() => expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument()); - await waitFor(() => expect(content.getByText("Channels/subband")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument()); - await waitFor(() => expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument()); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station groups")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); -}); -it("test Combined Observation Task Draft view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "1", type: "draft" } }} history={{}} location="/task/view/draft/1" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Combined Observation Task Draft view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "1", type: "draft" } }} history={{}} location="/task/view/draft/1" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); + expect(content.getByText("Pipeline target5")).toBeInTheDocument(); + expect(content.getByText("Pipeline target4")).toBeInTheDocument(); + expect(content.getByText("Pipeline target3")).toBeInTheDocument(); + expect(content.getByText("Pipeline target2")).toBeInTheDocument(); + expect(content.getByText("Pipeline target1")).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(7); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByText("Channels/subband")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station groups")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); - expect(content.getByText("Pipeline target5")).toBeInTheDocument(); - expect(content.getByText("Pipeline target4")).toBeInTheDocument(); - expect(content.getByText("Pipeline target3")).toBeInTheDocument(); - expect(content.getByText("Pipeline target2")).toBeInTheDocument(); - expect(content.getByText("Pipeline target1")).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(7); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByText("Channels/subband")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station groups")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); -}); -it("test Calibrator Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "2", type: "draft" } }} history={{}} location="/task/view/draft/2" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "2", type: "draft" } }} history={{}} location="/task/view/draft/2" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("3Cabc/1.0/CP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getByText("Ingest")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("3Cabc/1.0/CP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getByText("Ingest")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); -}); -it("test Target Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "7", type: "draft" } }} history={{}} location="/task/view/draft/7" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Target Pipeline Task Draft view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "7", type: "draft" } }} history={{}} location="/task/view/draft/7" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Pipeline target1")).toBeInTheDocument(); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("Paaa+01/1.0/PP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getByText("Ingest")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Pipeline target1")).toBeInTheDocument(); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("Paaa+01/1.0/PP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getByText("Ingest")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); -}); -it("test IM BF Cal&Tgt Task Draft view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "68", type: "draft" } }} history={{}} location="/task/view/draft/68" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test IM BF Cal Tgt Task Draft view", async () => { + let content; + await act(async () => { + try { + content = render(<Router><TaskView match={{ params: { id: "68", type: "draft" } }} history={{}} location="/task/view/draft/68" /></Router>); + } + catch (ex) + { + console.log(ex); + } + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument(); + expect(content.getByText("Observation")).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + + expect(content.getByText("Beamformer")).toBeInTheDocument(); + expect(content.getByText("Pipelines")).toBeInTheDocument(); + + expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("SAPs").length).toBe(3); + expect(content.getAllByText("Output quantisation settings").length).toBe(3); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station groups").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + + + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + + expect(content.getByText("File Conversion")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create a QA file for the observation")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument(); - expect(content.getByText("Observation")).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - - expect(content.getByText("Beamformer")).toBeInTheDocument(); - expect(content.getByText("Pipelines")).toBeInTheDocument(); - - expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("SAPs").length).toBe(3); - expect(content.getAllByText("Output quantisation settings").length).toBe(3); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station groups").length).toBe(2); - expect(content.getAllByRole("selected_stations").length).toBe(2); - expect(content.getAllByRole("selected_stations")[0].children.length).toBe(21); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - - - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - - expect(content.getByText("File Conversion")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create a QA file for the observation")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); -}); -it("test Simple Beamforming Observation Task Draft view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "53", type: "draft" } }} history={{}} location="/task/view/draft/53" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Simple Beamforming Observation Task Draft view", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "53", type: "draft" } }} history={{}} location="/task/view/draft/53" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument(); + expect(content.getByText("Observation")).toBeInTheDocument(); + expect(content.getByText("beamforming observation")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + + expect(content.getByText("Beamformer")).toBeInTheDocument(); + expect(content.getByText("Pipelines")).toBeInTheDocument(); + + expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("SAPs").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); + expect(content.getAllByText("Method").length).toBe(1); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); + expect(content.getByText("Allow after previous")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][target]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByText("Relative to SAP")).toBeInTheDocument(); + expect(content.getAllByText("Output quantisation settings").length).toBe(3); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station groups").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument(); - expect(content.getByText("Observation")).toBeInTheDocument(); - expect(content.getByText("beamforming observation")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - - expect(content.getByText("Beamformer")).toBeInTheDocument(); - expect(content.getByText("Pipelines")).toBeInTheDocument(); - - expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("SAPs").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); - expect(content.getAllByText("Method").length).toBe(1); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); - expect(content.getByText("Allow after previous")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][target]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByText("Relative to SAP")).toBeInTheDocument(); - expect(content.getAllByText("Output quantisation settings").length).toBe(3); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station groups").length).toBe(2); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); -}); -it("test Target Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "23", type: "draft" } }} history={{}} location="/task/view/draft/23" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Target Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "23", type: "draft" } }} history={{}} location="/task/view/draft/23" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getByText('Target Observation')).toBeInTheDocument(); + expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); + expect(content.getByText('Paaa+01 & Paaa+02')).toBeInTheDocument(); + expect(content.getByText('Pipeline target2')).toBeInTheDocument(); + expect(content.getByText('Pipeline target1')).toBeInTheDocument(); + expect(content.getByText("target observation")).toBeInTheDocument(); + + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByText("Channels/subband")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][2][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + + expect(content.getAllByText("enabled").length).toBe(2); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getByText('Target Observation')).toBeInTheDocument(); - expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); - expect(content.getByText('Paaa+01 & Paaa+02')).toBeInTheDocument(); - expect(content.getByText('Pipeline target2')).toBeInTheDocument(); - expect(content.getByText('Pipeline target1')).toBeInTheDocument(); - expect(content.getByText("target observation")).toBeInTheDocument(); - - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByText("Channels/subband")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][2][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - - expect(content.getAllByText("enabled").length).toBe(2); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); -}); -it("test Calibrator Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "21", type: "draft" } }} history={{}} location="/task/view/draft/21" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Observation Task Draft vew of IM HBA LoTSS - 2 Beams strategy", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "21", type: "draft" } }} history={{}} location="/task/view/draft/21" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getByText('Calibrator Observation 1')).toBeInTheDocument(); + expect(content.getByText('Calibrator Observation 1. Before the Target Observation')).toBeInTheDocument(); + expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); + expect(content.getByText('Cal1 3Cabc')).toBeInTheDocument(); + expect(content.getByText('Calibrator Pipeline 1')).toBeInTheDocument(); + expect(content.getByText("calibrator observation")).toBeInTheDocument(); + + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(1); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getByText('Calibrator Observation 1')).toBeInTheDocument(); - expect(content.getByText('Calibrator Observation 1. Before the Target Observation')).toBeInTheDocument(); - expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); - expect(content.getByText('Cal1 3Cabc')).toBeInTheDocument(); - expect(content.getByText('Calibrator Pipeline 1')).toBeInTheDocument(); - expect(content.getByText("calibrator observation")).toBeInTheDocument(); - - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(1); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); -}); -it("test Calibrator Pipeline Task Draft view of IM HBA LoTSS - 2 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "22", type: "draft" } }} history={{}} location="/task/view/draft/22" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Pipeline Task Draft view of IM HBA LoTSS - 2 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "22", type: "draft" } }} history={{}} location="/task/view/draft/22" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline 1")).toBeInTheDocument(); + expect(content.getByText("IM HBA LoTSS - 2 Beams")).toBeInTheDocument(); + expect(content.getByText("Cal1 3Cabc/PP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Calibrator Observation 1")).toBeInTheDocument(); + expect(content.getByText("Ingest")).toBeInTheDocument(); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline 1")).toBeInTheDocument(); - expect(content.getByText("IM HBA LoTSS - 2 Beams")).toBeInTheDocument(); - expect(content.getByText("Cal1 3Cabc/PP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Calibrator Observation 1")).toBeInTheDocument(); - expect(content.getByText("Ingest")).toBeInTheDocument(); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); -}); -it("test Pulsar Pipeline Task Draft view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "50", type: "draft" } }} history={{}} location="/task/view/draft/50" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Pulsar Pipeline Task Draft view", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "50", type: "draft" } }} history={{}} location="/task/view/draft/50" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Pipeline")).toBeInTheDocument(); + expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument(); + expect(content.getByText("Ingest")).toBeInTheDocument(); + expect(content.getByText("Cleanup")).toBeInTheDocument(); + expect(content.getByText("pulsar pipeline")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument(); + + expect(content.getAllByText("Coherent Dedispersion").length).toBe(2); + expect(content.getAllByText("Enabled").length).toBe(5); + expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument(); + expect(content.getByText("RFI excision")).toBeInTheDocument(); + expect(content.getByText("Optimise period & DM")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][subintegration_length]")).toBeInTheDocument(); + expect(content.getByText("Single pulse subintegration")).toBeInTheDocument(); + expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][rrats][dm_range]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][rfifind][blocks]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument(); + expect(content.getByText("Enable prepfold")).toBeInTheDocument(); + expect(content.getByText("Fold")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument(); + expect(content.getByText("Strategy")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); + expect(content.getByText("Single-pulse search")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Pipeline")).toBeInTheDocument(); - expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument(); - expect(content.getByText("Ingest")).toBeInTheDocument(); - expect(content.getByText("Cleanup")).toBeInTheDocument(); - expect(content.getByText("pulsar pipeline")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument(); - - expect(content.getAllByText("Coherent Dedispersion").length).toBe(2); - expect(content.getAllByText("Enabled").length).toBe(5); - expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument(); - expect(content.getByText("RFI excision")).toBeInTheDocument(); - expect(content.getByText("Optimise period & DM")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][subintegration_length]")).toBeInTheDocument(); - expect(content.getByText("Single pulse subintegration")).toBeInTheDocument(); - expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][rrats][dm_range]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][rfifind][blocks]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument(); - expect(content.getByText("Enable prepfold")).toBeInTheDocument(); - expect(content.getByText("Fold")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument(); - expect(content.getByText("Strategy")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); - expect(content.getByText("Single-pulse search")).toBeInTheDocument(); -}); -it("test Combined Observation Task Blueprint view of IM LBA Survey - 3 Beams", async () => { - jest.setTimeout(120000) - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "9", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/9" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Combined Observation Task Blueprint view of IM LBA Survey - 3 Beams", async () => { + jest.setTimeout(120000) + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "9", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/9" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Combined Observation").length).toBe(2); + expect(content.getByText("IM LBA Survey - 3 Beams")).toBeInTheDocument(); + expect(content.getByText("OOO.O Paaa+01 Paaa+02 Paaa+03")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); + expect(content.getAllByText("Cleanup").length).toBe(2); + expect(content.getByText("Pipeline target3")).toBeInTheDocument(); + expect(content.getByText("Pipeline target2")).toBeInTheDocument(); + expect(content.getByText("Pipeline target1")).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); + expect(content.getByText("Observation Start Time")).toBeInTheDocument(); + expect(content.getByText("Observation End Time")).toBeInTheDocument(); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(4); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(5); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByText("Channels/subband")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station groups")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Combined Observation").length).toBe(2); - expect(content.getByText("IM LBA Survey - 3 Beams")).toBeInTheDocument(); - expect(content.getByText("OOO.O Paaa+01 Paaa+02 Paaa+03")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); - expect(content.getAllByText("Cleanup").length).toBe(2); - expect(content.getByText("Pipeline target3")).toBeInTheDocument(); - expect(content.getByText("Pipeline target2")).toBeInTheDocument(); - expect(content.getByText("Pipeline target1")).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); - expect(content.getByText("Observation Start Time")).toBeInTheDocument(); - expect(content.getByText("Observation End Time")).toBeInTheDocument(); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(4); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(5); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByText("Channels/subband")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station groups")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); -}); -it("test Combined Observation Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "1", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/1" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Combined Observation Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "1", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/1" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Combined Observation").length).toBe(2); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument(); + expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); + expect(content.getByText("Pipeline target5")).toBeInTheDocument(); + expect(content.getByText("Pipeline target4")).toBeInTheDocument(); + expect(content.getByText("Pipeline target3")).toBeInTheDocument(); + expect(content.getByText("Pipeline target2")).toBeInTheDocument(); + expect(content.getByText("Pipeline target1")).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); + expect(content.getByText("Observation Start Time")).toBeInTheDocument(); + expect(content.getByText("Observation End Time")).toBeInTheDocument(); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(4); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(7); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByText("Channels/subband")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][3][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][4][frequency]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station groups")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Combined Observation").length).toBe(2); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("oXXX Paaa+01 3Cabc")).toBeInTheDocument(); - expect(content.getByText("Calibrator Pipeline")).toBeInTheDocument(); - expect(content.getByText("Pipeline target5")).toBeInTheDocument(); - expect(content.getByText("Pipeline target4")).toBeInTheDocument(); - expect(content.getByText("Pipeline target3")).toBeInTheDocument(); - expect(content.getByText("Pipeline target2")).toBeInTheDocument(); - expect(content.getByText("Pipeline target1")).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target observation")).toBeInTheDocument(); - expect(content.getByText("Observation Start Time")).toBeInTheDocument(); - expect(content.getByText("Observation End Time")).toBeInTheDocument(); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(4); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(7); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByText("Channels/subband")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][2][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][3][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][4][frequency]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station groups")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); -}); -it("test Calibrator Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "2", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/draft/blueprint" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "2", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/draft/blueprint" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Calibrator Pipeline").length).toBe(2); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("3Cabc/1.0/CP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getAllByText("Ingest").length).toBe(2); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Calibrator Pipeline").length).toBe(2); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("3Cabc/1.0/CP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getAllByText("Ingest").length).toBe(2); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); -}); -it("test Target Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "7", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/7" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Target Pipeline Task Blueprint view of IM LBA LoDSS - 5 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "7", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/7" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Pipeline target1").length).toBe(2); + expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); + expect(content.getByText("Paaa+01/1.0/PP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Combined Observation")).toBeInTheDocument(); + expect(content.getAllByText("Ingest").length).toBe(2); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Pipeline target1").length).toBe(2); - expect(content.getByText("IM LBA LoDSS - 5 Beams")).toBeInTheDocument(); - expect(content.getByText("Paaa+01/1.0/PP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Combined Observation")).toBeInTheDocument(); - expect(content.getAllByText("Ingest").length).toBe(2); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); -}); -it("test IM BF Cal&Tgt Task Blueprint view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "68", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/68" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); - }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument(); - expect(content.getAllByText("Observation").length).toBe(3); - expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); - expect(content.getAllByText("Observation Start Time").length).toBe(1); - expect(content.getAllByText("Observation End Time").length).toBe(1); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(4); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - - expect(content.getByText("Beamformer")).toBeInTheDocument(); - expect(content.getByText("Pipelines")).toBeInTheDocument(); - - expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("SAPs").length).toBe(3); - expect(content.getAllByText("Output quantisation settings").length).toBe(3); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station groups").length).toBe(2); - expect(content.getAllByRole("selected_stations").length).toBe(2); - expect(content.getAllByRole("selected_stations")[0].children.length).toBe(21); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - - - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - - expect(content.getByText("File Conversion")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create a QA file for the observation")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); - expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); -}); -it("test Simple Beamforming Observation Task Blueprint view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "53", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/53" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test IM BF Cal Tgt Task Blueprint view", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "68", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/68" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("IM BF Cal&Tgt")).toBeInTheDocument(); + expect(content.getAllByText("Observation").length).toBe(3); + expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); + expect(content.getAllByText("Observation Start Time").length).toBe(1); + expect(content.getAllByText("Observation End Time").length).toBe(1); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(4); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + + expect(content.getByText("Beamformer")).toBeInTheDocument(); + expect(content.getByText("Pipelines")).toBeInTheDocument(); + + expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("SAPs").length).toBe(3); + expect(content.getAllByText("Output quantisation settings").length).toBe(3); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station groups").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + + + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + + expect(content.getByText("File Conversion")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create a QA file for the observation")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); + expect(content.getByText("Do/Don't create plots from the QA file from the observation")).toBeInTheDocument(); + }); + + it("test Simple Beamforming Observation Task Blueprint view", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "53", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/53" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument(); + expect(content.getAllByText("Observation").length).toBe(3); + expect(content.getByText("beamforming observation")).toBeInTheDocument(); + expect(content.getAllByText("Observation Start Time").length).toBe(1); + expect(content.getAllByText("Observation End Time").length).toBe(1); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + + expect(content.getByText("Beamformer")).toBeInTheDocument(); + expect(content.getByText("Pipelines")).toBeInTheDocument(); + + expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("SAPs").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); + expect(content.getAllByText("Method").length).toBe(1); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); + expect(content.getByText("Allow after previous")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]")).toBeInTheDocument(); + const angle1El = content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]"); + expect(angle1El.value).toBe('03h06m00s'); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][target]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByText("Relative to SAP")).toBeInTheDocument(); + expect(content.getAllByText("Output quantisation settings").length).toBe(3); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station groups").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getByText("Simple Beamforming Observation")).toBeInTheDocument(); - expect(content.getAllByText("Observation").length).toBe(3); - expect(content.getByText("beamforming observation")).toBeInTheDocument(); - expect(content.getAllByText("Observation Start Time").length).toBe(1); - expect(content.getAllByText("Observation End Time").length).toBe(1); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - - expect(content.getByText("Beamformer")).toBeInTheDocument(); - expect(content.getByText("Pipelines")).toBeInTheDocument(); - - expect(content.getByText("Coherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("SAPs").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); - expect(content.getAllByText("Method").length).toBe(1); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); - expect(content.getByText("Allow after previous")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]")).toBeInTheDocument(); - const angle1El = content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle1]"); - expect(angle1El.value).toBe('03h06m00s'); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tabs][0][pointing][target]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByText("Relative to SAP")).toBeInTheDocument(); - expect(content.getAllByText("Output quantisation settings").length).toBe(3); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByText("Incoherent Tied-Array Beams")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station groups").length).toBe(2); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); -}); -it("test Target Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "24", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/24" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Target Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "24", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/24" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getAllByText('Target Observation').length).toBe(2); + expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); + expect(content.getByText('Paaa+01 & Paaa+02')).toBeInTheDocument(); + expect(content.getByText('Pipeline target2')).toBeInTheDocument(); + expect(content.getByText('Pipeline target1')).toBeInTheDocument(); + expect(content.getByText("target observation")).toBeInTheDocument(); + expect(content.getByText("Observation Start Time")).toBeInTheDocument(); + expect(content.getByText("Observation End Time")).toBeInTheDocument(); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(4); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + expect(content.getByText("Task Specification")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getByText("Channels/subband")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); + + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getByText("Station group 1")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 3")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][2][max_nr_missing]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + + expect(content.getAllByText("enabled").length).toBe(2); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getAllByText('Target Observation').length).toBe(2); - expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); - expect(content.getByText('Paaa+01 & Paaa+02')).toBeInTheDocument(); - expect(content.getByText('Pipeline target2')).toBeInTheDocument(); - expect(content.getByText('Pipeline target1')).toBeInTheDocument(); - expect(content.getByText("target observation")).toBeInTheDocument(); - expect(content.getByText("Observation Start Time")).toBeInTheDocument(); - expect(content.getByText("Observation End Time")).toBeInTheDocument(); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(4); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - expect(content.getByText("Task Specification")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getByText("Channels/subband")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][digital_pointing][target]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][name]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][SAPs][1][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][1][frequency]")).toBeInTheDocument(); - - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getByText("Station group 1")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 3")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][2][max_nr_missing]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - - expect(content.getAllByText("enabled").length).toBe(2); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); -}); -it("test Calibrator Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "22", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/22" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Observation Task Blueprint vew of IM HBA LoTSS - 2 Beams strategy", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "22", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/22" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getAllByText('Calibrator Observation 1').length).toBe(2); + expect(content.getByText('Calibrator Observation 1. Before the Target Observation')).toBeInTheDocument(); + expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); + expect(content.getByText('Cal1 3Cabc')).toBeInTheDocument(); + expect(content.getByText('Calibrator Pipeline 1')).toBeInTheDocument(); + expect(content.getByText("calibrator observation")).toBeInTheDocument(); + expect(content.getByText("Observation Start Time")).toBeInTheDocument(); + expect(content.getByText("Observation End Time")).toBeInTheDocument(); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(4); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(1); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getAllByText('Calibrator Observation 1').length).toBe(2); - expect(content.getByText('Calibrator Observation 1. Before the Target Observation')).toBeInTheDocument(); - expect(content.getByText('IM HBA LoTSS - 2 Beams')).toBeInTheDocument(); - expect(content.getByText('Cal1 3Cabc')).toBeInTheDocument(); - expect(content.getByText('Calibrator Pipeline 1')).toBeInTheDocument(); - expect(content.getByText("calibrator observation")).toBeInTheDocument(); - expect(content.getByText("Observation Start Time")).toBeInTheDocument(); - expect(content.getByText("Observation End Time")).toBeInTheDocument(); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(4); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(1); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); -}); -it("test Calibrator Pipeline Task Blueprint view of IM HBA LoTSS - 2 Beams", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "23", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/23" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Calibrator Pipeline Task Blueprint view of IM HBA LoTSS - 2 Beams", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "23", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/23" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Calibrator Pipeline 1").length).toBe(2); + expect(content.getByText("IM HBA LoTSS - 2 Beams")).toBeInTheDocument(); + expect(content.getByText("Cal1 3Cabc/PP")).toBeInTheDocument(); + expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); + expect(content.getByText("Calibrator Observation 1")).toBeInTheDocument(); + expect(content.getAllByText("Ingest").length).toBe(2); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByText("CasA")).toBeInTheDocument(); + expect(content.getByText("CygA")).toBeInTheDocument(); + expect(content.getByText("HerA")).toBeInTheDocument(); + expect(content.getByText("HydraA")).toBeInTheDocument(); + expect(content.getByText("TauA")).toBeInTheDocument(); + expect(content.getByText("VirA")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); + expect(content.getByText("Ignore target")).toBeInTheDocument(); + expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); + expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); + expect(content.getByText("Flag outer channels")).toBeInTheDocument(); + expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); + expect(content.getByText("Storage Manager")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Calibrator Pipeline 1").length).toBe(2); - expect(content.getByText("IM HBA LoTSS - 2 Beams")).toBeInTheDocument(); - expect(content.getByText("Cal1 3Cabc/PP")).toBeInTheDocument(); - expect(content.getByText("preprocessing pipeline")).toBeInTheDocument(); - expect(content.getByText("Calibrator Observation 1")).toBeInTheDocument(); - expect(content.getAllByText("Ingest").length).toBe(2); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByLabelText("specification[average][time_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_steps]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[average][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByText("CasA")).toBeInTheDocument(); - expect(content.getByText("CygA")).toBeInTheDocument(); - expect(content.getByText("HerA")).toBeInTheDocument(); - expect(content.getByText("HydraA")).toBeInTheDocument(); - expect(content.getByText("TauA")).toBeInTheDocument(); - expect(content.getByText("VirA")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][time_steps]")).toBeInTheDocument(); - expect(content.getByText("Ignore target")).toBeInTheDocument(); - expect(content.getByLabelText("specification[demix][frequency_steps]")).toBeInTheDocument(); - expect(content.getByText("RFI flagging strategy")).toBeInTheDocument(); - expect(content.getByText("Flag outer channels")).toBeInTheDocument(); - expect(content.getByText("Flag auto correlations")).toBeInTheDocument(); - expect(content.getByText("Storage Manager")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); -}); -it("test Pulsar Pipeline Task Blueprint view", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "50", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/50" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test Pulsar Pipeline Task Blueprint view", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "50", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/50" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + expect(content.getAllByText("Pipeline").length).toBe(3); + expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument(); + expect(content.getAllByText("Ingest").length).toBe(2); + expect(content.getAllByText("Cleanup").length).toBe(2); + expect(content.getByText("pulsar pipeline")).toBeInTheDocument(); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument(); + + expect(content.getAllByText("Coherent Dedispersion").length).toBe(2); + expect(content.getAllByText("Enabled").length).toBe(5); + expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument(); + expect(content.getByText("RFI excision")).toBeInTheDocument(); + expect(content.getByText("Optimise period & DM")).toBeInTheDocument(); + expect(content.getByLabelText("specification[dspsr][subintegration_length]")).toBeInTheDocument(); + expect(content.getByText("Single pulse subintegration")).toBeInTheDocument(); + expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][rrats][dm_range]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][rfifind][blocks]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument(); + expect(content.getByText("Enable prepfold")).toBeInTheDocument(); + expect(content.getByText("Fold")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument(); + expect(content.getByText("Strategy")).toBeInTheDocument(); + + expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); + expect(content.getByText("Cluster")).toBeInTheDocument(); + expect(content.getByText("Partition")).toBeInTheDocument(); + expect(content.getByText("Single-pulse search")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - expect(content.getAllByText("Pipeline").length).toBe(3); - expect(content.getByText("BF Pulsar Timing")).toBeInTheDocument(); - expect(content.getAllByText("Ingest").length).toBe(2); - expect(content.getAllByText("Cleanup").length).toBe(2); - expect(content.getByText("pulsar pipeline")).toBeInTheDocument(); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByLabelText("specification[dspsr][digifil][dm]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][digifil][channels_per_part]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][digifil][integration_time_factor]")).toBeInTheDocument(); - - expect(content.getAllByText("Coherent Dedispersion").length).toBe(2); - expect(content.getAllByText("Enabled").length).toBe(5); - expect(content.getByLabelText("specification[dspsr][filterbank][channels_per_part]")).toBeInTheDocument(); - expect(content.getByText("RFI excision")).toBeInTheDocument(); - expect(content.getByText("Optimise period & DM")).toBeInTheDocument(); - expect(content.getByLabelText("specification[dspsr][subintegration_length]")).toBeInTheDocument(); - expect(content.getByText("Single pulse subintegration")).toBeInTheDocument(); - expect(content.getByLabelText("specification[output][quantisation][scale]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[output][dynamic_spectrum][time_average]")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[presto][input][nr_blocks]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][input][decode_sigma]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][input][samples_per_block]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][rrats][dm_range]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][rfifind][blocks]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[presto][prepdata][dm]")).toBeInTheDocument(); - expect(content.getByText("Enable prepfold")).toBeInTheDocument(); - expect(content.getByText("Fold")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[pulsar][name]")).toBeInTheDocument(); - expect(content.getByText("Strategy")).toBeInTheDocument(); - - expect(content.getByLabelText("specification[cluster_resources][cores_per_task]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[cluster_resources][parallel_tasks]")).toBeInTheDocument(); - expect(content.getByText("Cluster")).toBeInTheDocument(); - expect(content.getByText("Partition")).toBeInTheDocument(); - expect(content.getByText("Single-pulse search")).toBeInTheDocument(); -}); -it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "69", type: "draft" } }} history={{}} location="/task/view/draft/69" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); + it("test IM+BF Observation Task Draft vew of Solar Campaign strategy", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "69", type: "draft" } }} history={{}} location="/task/view/draft/69" /></Router>); + await new Promise((r) => setTimeout(r, 2000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getAllByText("IM+BF").length).toBe(2); + expect(content.getByText('IM+BF Observation')).toBeInTheDocument(); + expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument(), { timeout: 2000 }); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); + expect(content.getAllByText("Method").length).toBe(1); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); + expect(content.getByText("Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getByText("Fly's Eye Settings")).toBeInTheDocument(); + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getAllByText("settings").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station group 1").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getAllByText("Station group 1").length).toBe(2); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getAllByText("enabled").length).toBe(2); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getAllByText("IM+BF").length).toBe(2); - expect(content.getByText('IM+BF Observation')).toBeInTheDocument(); - expect(content.getByText("parallel calibrator target and beamforming observation")).toBeInTheDocument(); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument(), { timeout: 2000 }); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); - expect(content.getAllByText("Method").length).toBe(1); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); - expect(content.getByText("Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getByText("Fly's Eye Settings")).toBeInTheDocument(); - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getAllByText("settings").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station group 1").length).toBe(2); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getAllByText("Station group 1").length).toBe(2); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getAllByText("enabled").length).toBe(2); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); -}); -it("test IM+BF Observation Task Blueprint vew of IM Solar Campaign strategy", async () => { - - jest.setTimeout(120000); - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "69", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/69" /></Router>); - await new Promise((r) => setTimeout(r, 500)); + it("test IM+BF Observation Task Blueprint vew of IM Solar Campaign strategy", async () => { + + jest.setTimeout(120000); + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "69", type: "blueprint" } }} history={{}} isUnitTest={true} location="/task/view/blueprint/69" /></Router>); + await new Promise((r) => setTimeout(r, 500)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getAllByText('IM+BF').length).toBe(3); + expect(content.getByText('IM+BF Observation')).toBeInTheDocument(); + expect(content.getByText("Observation Start Time")).toBeInTheDocument(); + expect(content.getByText("Observation End Time")).toBeInTheDocument(); + expect(content.getAllByText("Process Start Time").length).toBe(2); + expect(content.getAllByText("Process End Time").length).toBe(2); + expect(content.getByText("Status")).toBeInTheDocument(); + expect(content.getAllByRole("tablehead").length).toBe(13); + expect(content.getAllByRole("row").length).toBe(2); + expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); + expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); + await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); + expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); + expect(content.getByText("Auto-select")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); + expect(content.getAllByText("Method").length).toBe(1); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); + expect(content.getByText("Tied-Array Beams")).toBeInTheDocument(); + expect(content.getAllByText("Bits/sample").length).toBe(3); + expect(content.getAllByText("Output quantisation into integers").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getAllByText("Stokes").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getByText("Fly's Eye Settings")).toBeInTheDocument(); + expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getAllByText("settings").length).toBe(3); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); + expect(content.getAllByText("Station group 1").length).toBe(2); + expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); + expect(content.getByText("Storage cluster")).toBeInTheDocument(); + expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); + expect(content.getAllByText("Channels/subband").length).toBe(4); + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); + expect(content.getAllByText("Reference frame").length).toBe(3); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + expect(content.getByText("Antenna set")).toBeInTheDocument(); + expect(content.getByText("Band-pass filter")).toBeInTheDocument(); + expect(content.getAllByText("Station group 1").length).toBe(2); + expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByText("Station group 2")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); + expect(content.getAllByText("enabled").length).toBe(2); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); + expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); + expect(content.getByText("Inspection Plots")).toBeInTheDocument(); + expect(content.getByText("autocorrelation")).toBeInTheDocument(); + expect(content.getByText("crosscorrelation")).toBeInTheDocument(); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getAllByText('IM+BF').length).toBe(3); - expect(content.getByText('IM+BF Observation')).toBeInTheDocument(); - expect(content.getByText("Observation Start Time")).toBeInTheDocument(); - expect(content.getByText("Observation End Time")).toBeInTheDocument(); - expect(content.getAllByText("Process Start Time").length).toBe(2); - expect(content.getAllByText("Process End Time").length).toBe(2); - expect(content.getByText("Status")).toBeInTheDocument(); - expect(content.getAllByRole("tablehead").length).toBe(13); - expect(content.getAllByRole("row").length).toBe(2); - expect(content.getByTitle("Cancel Subtasks")).toBeInTheDocument(); - expect(content.getAllByTitle("Mark as Obsolete").length).toBe(1); - await waitFor(() => expect(content.getByText("Task Specification")).toBeInTheDocument()); - expect(content.getByLabelText("specification[duration]")).toBeInTheDocument(); - expect(content.getByText("Auto-select")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[calibrator][pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[calibrator][pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][subbands][list]")).toBeInTheDocument(); - expect(content.getAllByText("Method").length).toBe(1); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][count]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][SAPs][0][tab_rings][width]")).toBeInTheDocument(); - expect(content.getByText("Tied-Array Beams")).toBeInTheDocument(); - expect(content.getAllByText("Bits/sample").length).toBe(3); - expect(content.getAllByText("Output quantisation into integers").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getAllByText("Stokes").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][coherent][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getByText("Fly's Eye Settings")).toBeInTheDocument(); - expect(content.getByText("Enable Fly's Eye")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][flys eye][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getAllByText("settings").length).toBe(3); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_max]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][quantisation][scale_min]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][subbands_per_file]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][incoherent][settings][time_integration_factor]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[beamformer][pipelines][0][name]")).toBeInTheDocument(); - expect(content.getAllByText("Station group 1").length).toBe(2); - expect(content.getByLabelText("specification[beamformer][pipelines][0][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Use PPF when beamforming")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][integration_time]")).toBeInTheDocument(); - expect(content.getByText("Storage cluster")).toBeInTheDocument(); - expect(content.getByText("Topocentric Frequency Correction")).toBeInTheDocument(); - expect(content.getAllByText("Channels/subband").length).toBe(4); - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][angle2]")).toBeInTheDocument(); - expect(content.getAllByText("Reference frame").length).toBe(3); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][digital_pointing][target]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][name]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - expect(content.getByText("Antenna set")).toBeInTheDocument(); - expect(content.getByText("Band-pass filter")).toBeInTheDocument(); - expect(content.getAllByText("Station group 1").length).toBe(2); - expect(content.getByLabelText("specification[station_configuration][station_groups][0][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByText("Station group 2")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][station_groups][1][max_nr_missing]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle1]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][angle2]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[station_configuration][tile_beam][target]")).toBeInTheDocument(); - expect(content.getAllByText("enabled").length).toBe(2); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_subbands]")).toBeInTheDocument(); - expect(content.getByLabelText("specification[QA][file_conversion][nr_of_timestamps]")).toBeInTheDocument(); - expect(content.getByText("Inspection Plots")).toBeInTheDocument(); - expect(content.getByText("autocorrelation")).toBeInTheDocument(); - expect(content.getByText("crosscorrelation")).toBeInTheDocument(); }); +describe('Jeditor', () => { + it("Checking Correctness of Custom fields in JEditor using Simple Observation draft", async () => { + let content; + await act(async () => { + content = render(<Router><TaskView match={{ params: { id: "70", type: "draft" } }} history={{}} isUnitTest={true} location="/task/view/draft/70" /></Router>); + await new Promise((r) => setTimeout(r, 5000)); + }); + expect(content.getByText("Task - Details")).toBeInTheDocument(); + // checking Task details and specification + expect(content.getAllByText('Observation').length).toBe(1); + expect(content.getByText('Observation')).toBeInTheDocument(); + + + expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); + const freqRes = content.getByLabelText("specification[correlator][frequency_resolution]"); + expect(freqRes.value).toBe('3.05'); + expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); + const timeRes = content.getByLabelText("specification[correlator][time_resolution]"); + expect(timeRes.value).toBe('1'); + expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); + const freqSAP = content.getByLabelText("specification[station_configuration][SAPs][0][frequency]"); + expect(freqSAP.value).toBe('99.9-147.6'); + + + + await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" })).toBeInTheDocument()); + await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" })).toBeInTheDocument()); + const angle1El = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" }); + const angle1E2 = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" }); + + expect(angle1El.value).toBe('03h06m00s'); + expect(angle1E2.value).toBe('89d59m00s'); -it("Checking Correctness of Custom fields in JEditor using Simple Observation draft", async () => { - let content; - await act(async () => { - content = render(<Router><TaskView match={{ params: { id: "70", type: "draft" } }} history={{}} isUnitTest={true} location="/task/view/draft/70" /></Router>); - await new Promise((r) => setTimeout(r, 2000)); }); - expect(content.getByText("Task - Details")).toBeInTheDocument(); - // checking Task details and specification - expect(content.getAllByText('Observation').length).toBe(1); - expect(content.getByText('Observation')).toBeInTheDocument(); - - - expect(content.getByLabelText("specification[correlator][frequency_resolution]")).toBeInTheDocument(); - const freqRes = content.getByLabelText("specification[correlator][frequency_resolution]"); - expect(freqRes.value).toBe('3.05'); - expect(content.getByLabelText("specification[correlator][time_resolution]")).toBeInTheDocument(); - const timeRes = content.getByLabelText("specification[correlator][time_resolution]"); - expect(timeRes.value).toBe('1'); - expect(content.getByLabelText("specification[station_configuration][SAPs][0][frequency]")).toBeInTheDocument(); - const freqSAP = content.getByLabelText("specification[station_configuration][SAPs][0][frequency]"); - expect(freqSAP.value).toBe('99.9-147.6'); - - - - await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" })).toBeInTheDocument()); - await waitFor(() => expect(content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" })).toBeInTheDocument()); - const angle1El = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle1]" }); - const angle1E2 = content.getByRole("textbox", { name: "specification[station_configuration][SAPs][0][digital_pointing][angle2]" }); - - expect(angle1El.value).toBe('03h06m00s'); - expect(angle1E2.value).toBe('89d59m00s'); - -}); \ No newline at end of file +}) \ No newline at end of file diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js index de108252601e0bbe26016b8c741327ee6a7974d8..528c4083571a3e37a0ef77f0a1c7d6e1c16406ce 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/WeekView.js @@ -162,7 +162,7 @@ export default function WeekView() { const [weekNumbers, setWeekNumbers] = useState(""); const [startTime, setStartTime] = useState(moment().startOf('day')) - const [endTime, setEndTime] = useState(moment().endOf('day').add(UIConstants.WEEKVIEW_SHOW_NUMBER_OF_DAYS, 'days')) + const [endTime, setEndTime] = useState(moment().endOf('day')) const [items, setItems] = useState({ schedulingUnitItems: [], @@ -232,7 +232,6 @@ export default function WeekView() { let group = groups[currentGroupIndex]; const currentGroupDate = group.date; if (isDebugLoggingOn) console.log(" mouseOverItem[" + keys.itemGroupKey + "]=" + mouseOverItem?.[keys.itemGroupKey] + "date:" + currentGroupDate, "isSingleStation:" + group.isSingleStation, groups[currentGroupIndex]) - await getCursorDateTimes(cursorTimeUTC, currentGroupIndex, currentGroupDate, headerSettings.lstShiftInSeconds, group.designatedStation, group.isSingleStation, setCursorInformation); let newGroups = groups.map(group => ({ ...group })); newGroups.forEach(group => delete group.cursorInfo) @@ -328,7 +327,7 @@ export default function WeekView() { const groupsplittedItemsScheduling = expandTimeLineRowsForGrouping(schedulingUnitItems, grouper); const groupsplittedItemsReservations = expandTimeLineRowsForGrouping(reserVationUnitItems, grouper); let combinedItems = [...schedulingUnitItems, ...groupsplittedItemsScheduling, ...groupsplittedItemsReservations] - let groupupdates = getGroups(grouper, startTime, combinedItems); + let groupupdates = getGroups(grouper, startTime, combinedItems,endTime); setGroups(groupupdates.groups); refreshSunsettings(groupupdates.groups, groupupdates.itemGroupKey); @@ -473,7 +472,7 @@ export default function WeekView() { <div className="timeline-panel summary"> {showSummary && (summarySettings.isLoading ? <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} /> - : (summaryItem.type === "RESERVATION" ? + : (summaryItem?.type === "RESERVATION" ? (summarySettings.reservationItem === undefined ? <ProgressSpinner className="m-4" style={{ color: "var(--primary-300)" }} /> : <ReservationSummary reservation={summarySettings.reservationItem} diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/business/timelinegroupingbusiness.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/business/timelinegroupingbusiness.js index 00bc3e771ba48cc243bc83fc7dbe18b0f545e61b..f0025e04cd92e846bee41d2d9f6e07387355e8f1 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/business/timelinegroupingbusiness.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/business/timelinegroupingbusiness.js @@ -17,19 +17,21 @@ export function getTimelineGroups() { { label: "Scheduler Type", value: "scheduler_group", id: 11, title: "Scheduler Type" } ] } -export function getGroups(itemGroupKey, startTime, data) { +export function getGroups(itemGroupKey, startTime, data,endTime) { let groups if (itemGroupKey =="group") { // then group is the default, date one - groups = createDateGroups('', startTime); + let days = moment(endTime).diff(moment(startTime),'days')+1; + console.log(" getGroups NUmber of days",days,startTime,endTime) + groups = createDateGroups('', startTime,days); } else { - groups = createGroups(data, itemGroupKey ) + groups = createGroups(data, itemGroupKey,moment(startTime),moment(endTime) ) } return { groups, itemGroupKey } } -export function createGroups(timeLineRows, property ) { +export function createGroups(timeLineRows, property,startTime,endTime ) { const groups = []; if (timeLineRows !== undefined && timeLineRows.length>0) { @@ -46,6 +48,7 @@ export function createGroups(timeLineRows, property ) { } const groupDate = moment(datepart) + const weeknr = groupDate.format("w") const weekdate = groupDate.format("MMM DD - ddd") const formatedDate = groupDate.format(UIConstants.CALENDAR_GROUP_FORMAT) @@ -53,7 +56,8 @@ export function createGroups(timeLineRows, property ) { if (isSingleStation) { newgroup.designatedStation=splittedElement[0]; } - groups.push(newgroup); + + if (groupDate>=startTime && groupDate<=endTime) groups.push(newgroup); } } diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js index 237378696f0dda2396e34d90f7ac95fb6e8d8811..48bc19fd5c8effcb719eefaecc9c7875d0bab3f3 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.js @@ -1,62 +1,70 @@ import Flatpickr from "react-flatpickr"; -import {Button} from "primereact/button"; -import {useEffect, useState} from "react"; -import JumpToSUId from "./JumpToSuid"; +import { Button } from "primereact/button"; +import { Dropdown } from "primereact/dropdown"; +import { useEffect, useState } from "react"; +import JumpToSUId from "./JumpToSuid"; import moment from "moment"; import UIConstants from "../../../../utils/ui.constants"; import axios from "axios"; -import {getStore} from "../../../../services/store.helper"; +import { getStore } from "../../../../services/store.helper"; import { Panel } from 'primereact/panel'; + function DateSelector(props) { //TODO: extract to separate class const { - isRange, startTime, - setStartAndEndTimeCallback + setStartAndEndTimeCallback, } = props - if (!startTime) { - return null; - } - const title = isRange ? "Showing Date Range" : "Showing week from"; - const mode = isRange ? "range" : "single" + const DayorWeekOptions = ["Showing Day At", "Showing Week From"]; + const [selectedDayWeekOptions, setSelectedDayWeekOptions] = useState("Showing Day At") + const options = { "allowInput": true, - "enableSeconds": isRange, - "enableTime": isRange, - "time_24hr": isRange, - "mode": mode, + "mode": "single", "minuteIncrement": 1, "defaultHour": 0, "wrap": true, "inlineHideInput": true, } - const resetButtonTitle = isRange ? "Reset to the default date range" : "Reset to the current week" + + useEffect(() => { + UpdateTime(startTime) + }, [selectedDayWeekOptions]) + + + const UpdateTime = (startTime) => { + const currentStartTime = moment(startTime) + let numberDays = 6 + if (selectedDayWeekOptions == DayorWeekOptions[0]) { + numberDays = 0 + } + const newEndTime = currentStartTime.clone().add(numberDays, 'days').endOf('day') + setStartAndEndTimeCallback(currentStartTime, newEndTime) + } return <div data-testid="nav-datetime-selector"> - <label>{title}</label> - <Flatpickr data-enable-time={isRange} - data-input - value={startTime.format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)} - options={options} - onClose={value => { - const chosenDate = moment(value[0]); - const newStartTime = moment(chosenDate.startOf('day')) - const newEndTime = moment(chosenDate.add(UIConstants.WEEKVIEW_SHOW_NUMBER_OF_DAYS, 'days').endOf('day')) - setStartAndEndTimeCallback(newStartTime, newEndTime) - - }}> - <input type="text" data-input className="p-inputtext p-component calendar-input"/> + + <Dropdown value={selectedDayWeekOptions} onChange={(e) => { setSelectedDayWeekOptions(e.value) }} options={DayorWeekOptions} className="DayWeekDropDown" /> + <Flatpickr data-enable-time={false} + data-input + value={startTime.format(UIConstants.CALENDAR_DEFAULTDATE_FORMAT)} + options={options} + onClose={value => { + const chosenDate = moment(value[0]); + const newStartTime = moment(chosenDate.startOf('day')) + UpdateTime(newStartTime) + }}> + <input type="text" data-input className="p-inputtext p-component calendar-input" /> <Button className="p-button-icon-only calendar-button" - data-testid="nav-reset-button" - onClick={() => { - const now = moment(moment.now()) - const newStartTime = moment(now.startOf('day')); - const newEndTime = moment(now.add(UIConstants.WEEKVIEW_SHOW_NUMBER_OF_DAYS, 'days').endOf('day')); - setStartAndEndTimeCallback(newStartTime, newEndTime) - }} - title={resetButtonTitle}> + data-testid="nav-reset-button" + onClick={() => { + const now = moment(moment.now()) + const newStartTime = moment(now.startOf('day')); + UpdateTime(newStartTime) + }} + title="Reset to default"> <i className="fas fa-undo"></i> </Button> </Flatpickr> @@ -66,7 +74,6 @@ function DateSelector(props) { //TODO: extract to separate class - function changeStartAndEndTimeCallback(setStartTime, setEndTime) { return (newStartTime, newEndTime) => { setStartTime(newStartTime); @@ -108,12 +115,12 @@ export default function DateTimeNavigator(props) { return <div className="p-grid timeline-datetime-navigator"> <Panel header="Navigation"> <div className="group"> - + <div className="selector-container"> - <DateSelector isRange={false} startTime={startTime} - setStartAndEndTimeCallback={changeStartAndEndTimeCallback(setStartTime, setEndTime)}/> + <DateSelector startTime={startTime} + setStartAndEndTimeCallback={changeStartAndEndTimeCallback(setStartTime, setEndTime)} /> <JumpToSUId suId={suIdInput} setSUId={setSUIdInput} - setSearchForSUIdTrigger={setSearchForSUIdTrigger}/> + setSearchForSUIdTrigger={setSearchForSUIdTrigger} /> </div> </div> </Panel> diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js index 0b74d484eb25c25f098dc99c7eb947aa07e1c9c9..6ea75427a3b4516151f206ad3dd17af8169ff143 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/DateTimeNavigator.test.js @@ -12,6 +12,8 @@ describe('DateTimeNavigator', () => { const mockSetStartTime = jest.fn(); const mockSetEndTime = jest.fn(); + + it('renders date selector, jump to and week changer correctly', () => { const pageContent = render( <DateTimeNavigator @@ -21,18 +23,26 @@ describe('DateTimeNavigator', () => { /> ); + + + const dateSelector = pageContent.getByTestId('nav-datetime-selector'); const resetButton = pageContent.getByTestId('nav-reset-button'); const jumpToSUIdButton = pageContent.getByTestId('nav-jump-to-button'); expect(dateSelector).toBeInTheDocument(); - expect(dateSelector.textContent).toBe("Showing week from"); + expect(resetButton).toBeInTheDocument(); - expect(resetButton.title).toBe("Reset to the current week"); + expect(resetButton.title).toBe("Reset to default"); expect(jumpToSUIdButton).toBeInTheDocument(); expect(jumpToSUIdButton.title).toBe("Set the week to the scheduling unit's on sky or process start time.") }); + + + + + it('Clicks buttons; reset, previous+next week', () => { const mockStartTime = moment('2023-08-15'); const pageContent = render( @@ -42,12 +52,11 @@ describe('DateTimeNavigator', () => { setEndTime={mockSetEndTime} /> ); - const resetButton = pageContent.getByTestId('nav-reset-button'); clickItem(resetButton) - expect(mockSetStartTime).toHaveBeenCalledTimes(1); - expect(mockSetEndTime).toHaveBeenCalledTimes(1); + expect(mockSetStartTime).toHaveBeenCalledTimes(2); + expect(mockSetEndTime).toHaveBeenCalledTimes(2); }); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js index 4656714d330b0d8966b67d3510f0527da3666a45..b9f4b3c8a6894813f5cf8fb5be683f38fb752fee 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/components/toolbar/JumpToSuid.js @@ -9,7 +9,7 @@ const JumpToSUId = (props) => { setSearchForSUIdTrigger } = props - return <div data-testid="nav-jump-to-suid"> + return <div data-testid="nav-jump-to-suid" className="JumpToSuid"> <label>Jump to SU id</label> <div> <InputNumber data-testid="jump-to-input" diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/data/week.view.data.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/data/week.view.data.js index 72320301defedc79efed3e70497e80e9c4f59654..ee38d81841a187a5a69b58cefe95add45aec05ea 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/data/week.view.data.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/Timeline/data/week.view.data.js @@ -4,15 +4,15 @@ import ReservationService from "../../../services/reservation.service"; import AuthUtil from "../../../utils/auth.util"; import UtilService from "../../../services/util.service"; import moment from "moment/moment"; -import TaskService from "../../../services/task.service"; import { getSunTimingItems } from "../helpers/week.view.helper"; -import TimelineCommonUtils from "../common.utils"; import { getStore } from "../../../services/store.helper"; export async function fetchTimelineData(startTime, endTime, setData) { + + const from = startTime.format(UIConstants.CALENDAR_DATETIME_FORMAT); const until = endTime.format(UIConstants.CALENDAR_DATETIME_FORMAT); - + console.log("fetchTimelineData from " + from + "until " +until); const schedulingUnits = await ScheduleService.getTimelineSlimBlueprints(from, until); const reservations = await fetchReservations(from, until) diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.js index cc1195a7736a3575997e2b3f9c02eb34eef8802f..8d74100108a72ec86ec1ef508216286b3b345cf6 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.js @@ -1,31 +1,33 @@ import { useState, useEffect } from 'react'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; -import Auth from '../../authenticate/auth.js'; import PermissionStackUtil from '../../authenticate/permission.stack.handler'; const UserOverView = () => { - const [permissions, setPermissions] = useState([]); +const [permissions, setPermissions] = useState(); useEffect(() => { const fetchData = async () => { try { - const user = Auth.getUser(); - const userPermissions = await PermissionStackUtil.getPermissions(user); - const objectpermissions = Object.entries(userPermissions); - - setPermissions(objectpermissions); + const userPermissions = await PermissionStackUtil.getPermissions(true); + delete userPermissions["token"]; + + const objectpermissions = Object.entries(userPermissions); + + setPermissions(objectpermissions); } catch (error) { - console.error('Error fetching user permissions:', error); + console.info('Error fetching user permissions:', error); } }; fetchData(); }, []); // The empty dependency array ensures that this effect runs once when the component mounts - const checkMarkTemplate = (fieldvalue) => { + function checkMarkTemplate (rowData, field) { + let fieldvalue; + if (field!==undefined) fieldvalue=rowData?.[1]?.[field] const classes = fieldvalue===true ? 'pi true-icon pi-check-circle' : ''; return <i className={classes}></i>; -}; +} @@ -33,25 +35,30 @@ const UserOverView = () => { return ( <div> - <DataTable value={permissions} resizableColumns columnResizeMode="expand" scrollable showGridlines stripedRows > - <Column field="0" header="Module" frozen /> - <Column field="1.create" header="Create" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].create)} /> - <Column field="1.edit" header="Edit" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].edit)} /> - <Column field="1.delete" header="Delete" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].delete)} /> - <Column field="1.list" header="List" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].list)} /> - <Column field="1.add" header="Add" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].add)} /> - <Column field="1.setting" header="Setting" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].setting)} /> - <Column field="1.canceltask" header="Cancel Task" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].canceltask)} /> - <Column field="1.addreservation" header="addreservation" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].addreservation)} /> - <Column field="1.addsystemevent" header="addsystemevent" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].addsystemevent)} /> - <Column field="1.listreservation" header="listreservation" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].listreservation)} /> - <Column field="1.listsystemevent" header="listsystemevent" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].listsystemevent)} /> - <Column field="1.decide_acceptance" header="decide_acceptance" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].decide_acceptance)} /> - <Column field="1.pi_verification" header="pi_verification" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].pi_verification)} /> - <Column field="1.qa_reporting_sos" header="qa_reporting_sos" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].qa_reporting_sos)} /> - <Column field="1.qa_reporting_to" header="qa_reporting_to" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].qa_reporting_to)} /> - <Column field="1.unpin_data" header="unpin_data" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData[1].unpin_data)} /> + <div> + + {( permissions && permissions.length>0) && ( + <DataTable value={permissions} scrollable showGridlines stripedRows > + <Column field="0" header="Module" /> + <Column field="1.create" header="Create" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"create")} /> + <Column field="1.edit" header="Edit" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData, "edit")} /> + <Column field="1.delete" header="Delete" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"delete")} /> + <Column field="1.list" header="List" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"list")} /> + <Column field="1.add" header="Add" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"add")} /> + <Column field="1.setting" header="Setting" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"setting")} /> + <Column field="1.canceltask" header="Cancel Task" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"canceltask")} /> + <Column field="1.addreservation" header="addreservation" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"addreservation")} /> + <Column field="1.addsystemevent" header="addsystemevent" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"addsystemevent")} /> + <Column field="1.listreservation" header="listreservation" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"listreservation")} /> + <Column field="1.listsystemevent" header="listsystemevent" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"listsystemevent")} /> + <Column field="1.decide_acceptance" header="decide_acceptance" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"decide_acceptance")} /> + <Column field="1.pi_verification" header="pi_verification" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"pi_verification")} /> + <Column field="1.qa_reporting_sos" header="qa_reporting_sos" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"qa_reporting_sos")} /> + <Column field="1.qa_reporting_to" header="qa_reporting_to" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"qa_reporting_to")} /> + <Column field="1.unpin_data" header="unpin_data" dataType="boolean" body={(rowData ) => checkMarkTemplate(rowData,"unpin_data")} /> </DataTable> +)} + </div> </div> ); }; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.test.js b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.test.js new file mode 100644 index 0000000000000000000000000000000000000000..e519479d4e068f8732fba6a1e71bf5fb829fec90 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/UserOverView.test.js @@ -0,0 +1,67 @@ +import UserOverView from "./UserOverView" +import renderer, { act } from 'react-test-renderer'; +import axios from "axios"; +import MockAdapter from 'axios-mock-adapter'; + +const fakeauthanswer = { data:{ + "count": 1, + "next": "null", + "previous": null, + "results": [ + { + "name": "nothing" + } + ] + }} + + +function MakePrimaryMock() { + let mock = new MockAdapter(axios); + + + mock.onGet("/api/scheduling_set/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, copy"}); + mock.onGet("/api/scheduling_unit_draft/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, copy, create_cleanuptask_for_scheduling_unit_draft, create_observing_strategy_template, create_scheduling_unit_blueprint_and_tasks_and_subtasks_tree, scheduling_constraints_plot, specifications_doc, update_task_graph_from_specifications_doc"}); + mock.onGet("/api/project/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, friend, my_roles, report"}); + mock.onGet("/api/scheduling_set/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, copy"}); + mock.onGet("/api/scheduling_unit_observing_strategy_template/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, create_scheduling_unit, template_doc_complete_with_defaults, template_doc_with_just_the_parameters, trigger_doc"}); + mock.onGet("/api/scheduling_unit_blueprint/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, cancel, copy_specifications_doc_back_into_draft, copy_specifications_doc_including_copies_for_failed_tasks_back_into_draft, copy_to_draft, create_cleanuptask_for_scheduling_unit_blueprint, create_copies_of_failed_tasks_via_draft, get_all_subtasks_log_urls, mark_as_obsolete, mark_dynamically_scheduled, mark_fixed_time_scheduled_at_scheduled_starttime, reset_schedule, schedule, scheduling_constraints_plot, specifications_doc, specifications_doc_including_copies_for_failed_tasks, specifications_doc_with_just_the_parameters, subtasks, system_events, unschedule"}); + mock.onGet("/api/cycle/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, report "}); + mock.onGet("/api/task_draft/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, copy, create_task_blueprint, create_task_blueprint_and_subtasks, predecessors, successors"}); + mock.onGet("/api/task_blueprint/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, cancel, copy_to_new_draft, create_subtasks, mark_as_obsolete, predecessors, restart_when_on_hold, schedule_independent_subtasks, successors, system_events"}); + mock.onGet("/api/reservation/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); + mock.onGet("/api/task_relation_draft/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); + mock.onGet("/api/task_relation_blueprint/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); + mock.onGet("/api/system_event/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE"}); + mock.onGet("/api/setting/fixed_time_scheduling_enabled/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET"}); + mock.onGet("/api/setting/dynamic_scheduling_enabled/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET"}); + mock.onGet("/api/project/?fields=name&limit=1").reply(200, fakeauthanswer,{"access-control-allow-methods":"GET, POST, PUT, PATCH, DELETE, friend, my_roles, report"}); + + + + + + + + +} +describe('UserOverView Render Contents', () => { + it("UserOverView renders without errors without data", () => { + const page = renderer + .create(<UserOverView> </UserOverView>) + .toJSON(); + expect(page).toMatchSnapshot(); + }); + + it('UserOverView renders correctly with data', async () => { + MakePrimaryMock(); + + let page; + await act(async () => { + page = renderer + .create(<UserOverView> </UserOverView>); + }); + + // Now `page` should be defined + expect(page.toJSON()).toMatchSnapshot(); + }); +}); diff --git a/SAS/TMSS/frontend/tmss_webapp/src/routes/User/__snapshots__/UserOverView.test.js.snap b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/__snapshots__/UserOverView.test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..5f180fa569e563f267761a909d38d152e0ea5a48 --- /dev/null +++ b/SAS/TMSS/frontend/tmss_webapp/src/routes/User/__snapshots__/UserOverView.test.js.snap @@ -0,0 +1,6410 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`UserOverView Render Contents UserOverView renders correctly with data 1`] = ` +<div> + <div> + <div + className="p-datatable p-component p-datatable-scrollable p-datatable-responsive-scroll p-datatable-striped p-datatable-gridlines" + data-pc-name="datatable" + data-pc-section="root" + data-scrollselectors=".p-datatable-wrapper" + id={null} + style={Object {}} + > + <div + className="p-datatable-wrapper" + data-pc-section="wrapper" + style={ + Object { + "maxHeight": null, + } + } + > + <table + className="p-datatable-table p-datatable-scrollable-table" + data-pc-section="table" + role="table" + style={Object {}} + > + <thead + className="p-datatable-thead" + data-pc-section="thead" + parent={ + Object { + "props": Object { + "__TYPE": "DataTable", + "alwaysShowPaginator": true, + "breakpoint": "960px", + "cellClassName": null, + "cellSelection": false, + "checkIcon": null, + "children": Array [ + <Column + field="0" + header="Module" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.create" + header="Create" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.edit" + header="Edit" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.delete" + header="Delete" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.list" + header="List" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.add" + header="Add" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.setting" + header="Setting" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.canceltask" + header="Cancel Task" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.addreservation" + header="addreservation" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.addsystemevent" + header="addsystemevent" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.listreservation" + header="listreservation" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.listsystemevent" + header="listsystemevent" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.decide_acceptance" + header="decide_acceptance" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.pi_verification" + header="pi_verification" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.qa_reporting_sos" + header="qa_reporting_sos" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.qa_reporting_to" + header="qa_reporting_to" + />, + <Column + body={[Function]} + dataType="boolean" + field="1.unpin_data" + header="unpin_data" + />, + ], + "className": null, + "collapsedRowIcon": null, + "columnResizeMode": "fit", + "compareSelectionBy": "deepEquals", + "contextMenuSelection": null, + "csvSeparator": ",", + "currentPageReportTemplate": "({currentPage} of {totalPages})", + "customRestoreState": null, + "customSaveState": null, + "dataKey": null, + "defaultSortOrder": 1, + "dragSelection": false, + "editMode": null, + "editingRows": null, + "emptyMessage": null, + "expandableRowGroups": false, + "expandedRowIcon": null, + "expandedRows": null, + "exportFilename": "download", + "exportFunction": null, + "filterClearIcon": null, + "filterDelay": 300, + "filterDisplay": "menu", + "filterIcon": null, + "filterLocale": undefined, + "filters": null, + "first": 0, + "footer": null, + "footerColumnGroup": null, + "frozenValue": null, + "frozenWidth": null, + "globalFilter": null, + "globalFilterFields": null, + "globalFilterMatchMode": "contains", + "groupRowsBy": null, + "header": null, + "headerColumnGroup": null, + "id": null, + "isDataSelectable": null, + "lazy": false, + "loading": false, + "loadingIcon": null, + "metaKeySelection": true, + "multiSortMeta": null, + "onAllRowsSelect": null, + "onAllRowsUnselect": null, + "onCellClick": null, + "onCellSelect": null, + "onCellUnselect": null, + "onColReorder": null, + "onColumnResizeEnd": null, + "onColumnResizerClick": null, + "onColumnResizerDoubleClick": null, + "onContextMenu": null, + "onContextMenuSelectionChange": null, + "onFilter": null, + "onPage": null, + "onRowClick": null, + "onRowCollapse": null, + "onRowDoubleClick": null, + "onRowEditCancel": null, + "onRowEditChange": null, + "onRowEditComplete": null, + "onRowEditInit": null, + "onRowEditSave": null, + "onRowExpand": null, + "onRowMouseEnter": null, + "onRowMouseLeave": null, + "onRowReorder": null, + "onRowSelect": null, + "onRowToggle": null, + "onRowUnselect": null, + "onSelectAllChange": null, + "onSelectionChange": null, + "onSort": null, + "onStateRestore": null, + "onStateSave": null, + "onValueChange": null, + "pageLinkSize": 5, + "paginator": false, + "paginatorClassName": null, + "paginatorDropdownAppendTo": null, + "paginatorLeft": null, + "paginatorPosition": "bottom", + "paginatorRight": null, + "paginatorTemplate": "FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink RowsPerPageDropdown", + "pt": undefined, + "removableSort": false, + "reorderIndicatorDownIcon": null, + "reorderIndicatorUpIcon": null, + "reorderableColumns": false, + "reorderableRows": false, + "resizableColumns": false, + "responsiveLayout": "scroll", + "rowClassName": null, + "rowEditValidator": null, + "rowEditorCancelIcon": null, + "rowEditorInitIcon": null, + "rowEditorSaveIcon": null, + "rowExpansionTemplate": null, + "rowGroupFooterTemplate": null, + "rowGroupHeaderTemplate": null, + "rowGroupMode": null, + "rowHover": false, + "rows": null, + "rowsPerPageOptions": null, + "scrollHeight": null, + "scrollable": true, + "selectAll": false, + "selectOnEdit": true, + "selection": null, + "selectionAriaLabel": null, + "selectionAutoFocus": true, + "selectionMode": null, + "selectionPageOnly": false, + "showGridlines": true, + "showHeaders": true, + "showRowReorderElement": null, + "showSelectAll": true, + "showSelectionElement": null, + "size": "normal", + "sortField": null, + "sortIcon": null, + "sortMode": "single", + "sortOrder": null, + "stateKey": null, + "stateStorage": "session", + "stripedRows": true, + "style": null, + "tabIndex": 0, + "tableClassName": null, + "tableStyle": null, + "totalRecords": null, + "value": Array [ + Array [ + "project", + Object { + "create": true, + "delete": true, + "edit": true, + "list": true, + }, + ], + Array [ + "observationStrategy", + "GET, POST, PUT, PATCH, DELETE, create_scheduling_unit, template_doc_complete_with_defaults, template_doc_with_just_the_parameters, trigger_doc", + ], + Array [ + "scheduleunit", + Object { + "autodeletion": true, + "cancelsu": true, + "cleanuptask": true, + "copysu": true, + "create": true, + "create_rerun": true, + "createsub": true, + "dataproduct": true, + "delete": true, + "edit": true, + "excelview": true, + "list": true, + "update_sub": true, + "viewworkflow": true, + }, + ], + Array [ + "scheduleunit_draft", + Object { + "add": true, + "create": true, + "delete": true, + "edit": true, + "list": true, + "scheduling_set": true, + }, + ], + Array [ + "scheduleunit_blueprint", + Object { + "add": true, + "create": true, + "dataproduct": true, + "delete": true, + "edit": true, + "list": true, + }, + ], + Array [ + "cycle", + Object { + "create": true, + "delete": true, + "edit": true, + "list": true, + }, + ], + Array [ + "task", + Object { + "delete": false, + "edit": false, + "list": true, + }, + ], + Array [ + "task_draft", + Object { + "canceltask": true, + }, + ], + Array [ + "task_blueprint", + Object { + "canceltask": false, + }, + ], + Array [ + "timeline", + Object { + "addreservation": true, + "addsystemevent": true, + "listreservation": true, + "listsystemevent": true, + }, + ], + Array [ + "weekoverview", + Object { + "addreservation": true, + "addsystemevent": true, + "listreservation": true, + "listsystemevent": true, + }, + ], + Array [ + "reservation", + Object { + "create": true, + "delete": true, + "edit": true, + "list": true, + }, + ], + Array [ + "dynamicScheduler", + Object { + "setting": false, + }, + ], + Array [ + "fixedTimeScheduler", + Object { + "setting": false, + }, + ], + Array [ + "systemevent", + Object { + "create": true, + "delete": true, + "edit": true, + "list": true, + }, + ], + Array [ + "workflow", + Object { + "decide_acceptance": true, + "pi_verification": true, + "qa_reporting_sos": true, + "qa_reporting_to": true, + "unpin_data": true, + }, + ], + ], + "virtualScrollerOptions": null, + }, + "state": Object { + "columnOrder": Array [], + "d_filters": Object { + "0": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.add": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.addreservation": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.addsystemevent": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.canceltask": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.create": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.decide_acceptance": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.delete": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.edit": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.list": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.listreservation": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.listsystemevent": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.pi_verification": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.qa_reporting_sos": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.qa_reporting_to": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.setting": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + "1.unpin_data": Object { + "constraints": Array [ + Object { + "matchMode": "startsWith", + "value": null, + }, + ], + "operator": "and", + }, + }, + "d_rows": null, + "editingMeta": Object {}, + "filters": null, + "first": 0, + "groupRowsSortMeta": null, + "multiSortMeta": null, + "rows": null, + "sortField": null, + "sortOrder": null, + }, + } + } + state={ + Object { + "allSortableDisabled": false, + "sortableDisabledFields": Array [], + } + } + > + <tr + data-pc-section="headerrow" + role="row" + > + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Module + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Create + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Edit + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Delete + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + List + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Add + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Setting + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + Cancel Task + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + addreservation + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + addsystemevent + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + listreservation + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + listsystemevent + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + decide_acceptance + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + pi_verification + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + qa_reporting_sos + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + qa_reporting_to + </span> + </div> + </th> + <th + aria-sort={null} + className="" + colSpan={null} + data-pc-name="column" + data-pc-section="root" + onClick={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + role="columnheader" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <div + className="p-column-header-content" + data-pc-section="headercontent" + > + <span + className="p-column-title" + data-pc-section="headertitle" + > + unpin_data + </span> + </div> + </th> + </tr> + </thead> + <tbody + className="p-datatable-tbody" + data-pc-section="tbody" + style={Object {}} + > + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + project + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + observationStrategy + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + scheduleunit + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + scheduleunit_draft + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + scheduleunit_blueprint + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + cycle + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + task + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + task_draft + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + task_blueprint + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + timeline + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + weekoverview + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + reservation + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + dynamicScheduler + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + fixedTimeScheduler + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + systemevent + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + </tr> + <tr + className="p-row-odd" + data-pc-section="row" + onClick={[Function]} + onContextMenu={[Function]} + onDoubleClick={[Function]} + onDragEnd={[Function]} + onDragLeave={[Function]} + onDragOver={[Function]} + onDragStart={[Function]} + onDrop={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseEnter={[Function]} + onMouseLeave={[Function]} + onMouseUp={[Function]} + onTouchEnd={[Function]} + role="row" + style={ + Object { + "height": undefined, + } + } + tabIndex={null} + > + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + workflow + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + <td + className="" + data-pc-name="column" + data-pc-section="root" + onBlur={[Function]} + onClick={[Function]} + onKeyDown={[Function]} + onMouseDown={[Function]} + onMouseUp={[Function]} + role="cell" + rowSpan={null} + style={Object {}} + tabIndex={null} + > + <i + className="pi true-icon pi-check-circle" + /> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> +</div> +`; + +exports[`UserOverView Render Contents UserOverView renders without errors without data 1`] = ` +<div> + <div /> +</div> +`; diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js index 593da0229cd88274ea6157f777afc88c4e0944a4..655aec380e8f4d9a37e72ddf424dd64d5cb212c9 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/parser.utility.js @@ -103,8 +103,7 @@ const ParserUtility = { if (stationParameters === undefined || stationParameters.length === 0) { const taskKeys = Object.keys(observStrategy.template.tasks); for (const key of taskKeys) { - if (observStrategy.template.tasks[key]['specifications_doc'].hasOwnProperty(['station_configuration']) - && observStrategy.template.tasks[key]['specifications_doc']['station_configuration'].hasOwnProperty(['station_groups'])) { + if (observStrategy.template.tasks[key]['specifications_doc']?.['station_configuration']?.['station_groups']) { observStrategy.template.parameters.push({ "name": "Station Groups - "+key, "refs": [ diff --git a/SAS/TMSS/frontend/tmss_webapp/src/utils/websocket.js b/SAS/TMSS/frontend/tmss_webapp/src/utils/websocket.js index 57ba6e0601fea2cbce9f86d494b7301548430a79..782a5cf3d2c2cb8f31103bd381d63ee377b52150 100644 --- a/SAS/TMSS/frontend/tmss_webapp/src/utils/websocket.js +++ b/SAS/TMSS/frontend/tmss_webapp/src/utils/websocket.js @@ -216,7 +216,7 @@ function useWeekViewWebSocket(data, setData, summaryItem, setSummaryItem, setSho onClose: () => onDisconnect(), onMessage: (event) => handleData(event), onError: (event) => { console.error(event); }, - shouldReconnect: (closeEvent) => true, + shouldReconnect: () => true, }); }