From 7ce9ce06686472f23a3d63e1054142713eedfdc3 Mon Sep 17 00:00:00 2001 From: Peiqi Liu Date: Sun, 5 Mar 2023 20:14:18 -0500 Subject: [PATCH 1/6] Added redesign UI in FTA.vue via iframe + flask, updated readme --- .gitmodules | 4 + Apps/FrontendSoftware/README.md | 8 + Apps/FrontendSoftware/package-lock.json | 34 +-- Apps/FrontendSoftware/package.json | 2 +- Apps/FrontendSoftware/src/background.js | 11 + .../src/components/FTA/FTA.vue | 233 +----------------- Apps/FrontendSoftware/yarn.lock | 8 +- 7 files changed, 56 insertions(+), 244 deletions(-) create mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..6026b33bf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "Apps/FrontendSoftware/public/FLEUR"] + path = Apps/FrontendSoftware/public/FLEUR + url = git@github.com:PlanetaryRobotics/FLEUR.git + branch = integration-dev \ No newline at end of file diff --git a/Apps/FrontendSoftware/README.md b/Apps/FrontendSoftware/README.md index 26fbbc3dc..514df76ed 100644 --- a/Apps/FrontendSoftware/README.md +++ b/Apps/FrontendSoftware/README.md @@ -1,6 +1,14 @@ # Iris Terminal (2022): A Mission Operations Center Interface v.1 ## **Project setup** +First, run this to get FLEUR (you need access to the FLEUR repository) +``` +git submodule update --init --recursive --remote +``` + +Make sure `python3` and [required packages](https://github.com/PlanetaryRobotics/FLEUR/blob/redesign-dev/README.md#Development) are installed. +A copy of FLEUR can be found in `Apps/FrontendSoftware/public/FLEUR`. + Install `node@14.20.1` (it's recommended to use `nvm`), `npm`, `yarn`, and a c-compiler (`xcode` if on a mac). **NOTE:** If using MacOS and `nvm` make sure nvm setup is in `~/.zshenv` (what normally goes in `~/.bash_profile`) diff --git a/Apps/FrontendSoftware/package-lock.json b/Apps/FrontendSoftware/package-lock.json index 81f180592..3f964e29e 100644 --- a/Apps/FrontendSoftware/package-lock.json +++ b/Apps/FrontendSoftware/package-lock.json @@ -1,6 +1,6 @@ { - "name": "iris-ground-terminal-calm-collins", - "version": "0.8.1", + "name": "iris-ground-terminal-calm-collins-2", + "version": "0.8.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -7495,9 +7495,9 @@ } }, "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -10097,9 +10097,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http-deceiver": { "version": "1.2.7", @@ -11365,9 +11365,9 @@ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "4.0.0", @@ -12229,9 +12229,9 @@ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12420,9 +12420,9 @@ } }, "luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==" + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", + "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==" }, "make-dir": { "version": "3.1.0", diff --git a/Apps/FrontendSoftware/package.json b/Apps/FrontendSoftware/package.json index ce16dc26e..c9d293cd0 100644 --- a/Apps/FrontendSoftware/package.json +++ b/Apps/FrontendSoftware/package.json @@ -39,7 +39,7 @@ "jquery": "^3.5.1", "js-base64": "^3.4.5", "js-sha256": "^0.9.0", - "luxon": "^1.24.1", + "luxon": "^1.28.1", "mime-types": "^2.1.27", "module": "^1.2.5", "moment": "^2.27.0", diff --git a/Apps/FrontendSoftware/src/background.js b/Apps/FrontendSoftware/src/background.js index 84f3d7a5b..0a1d60f81 100644 --- a/Apps/FrontendSoftware/src/background.js +++ b/Apps/FrontendSoftware/src/background.js @@ -29,6 +29,9 @@ import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'; const isProduction = process.env.NODE_ENV === 'production'; const isDevelopment = !isProduction; +// Launch python script +import child_process from 'child_process'; + // Handle all unhandled exceptions for diagnostics (and reporting): const unhandled = require('electron-unhandled'); unhandled(); @@ -45,6 +48,9 @@ const ICON = let URL_PREFIX; +// flask process launched for FLEUR +let flaskProcess; + // Standard scheme must be registered before the app is ready protocol.registerSchemesAsPrivileged([{ scheme: 'app', @@ -206,6 +212,11 @@ app.on('activate', () => { // Some APIs can only be used after this event occurs. app.on('ready', async () => { spawn(); + flaskProcess = child_process.spawn('python3', [path.join(__static, 'FLEUR', 'fleur_server.py')]); +}); + +app.on('quit', async () => { + if (flaskProcess) flaskProcess.kill(); }); // Exit cleanly on request from parent process in development mode. diff --git a/Apps/FrontendSoftware/src/components/FTA/FTA.vue b/Apps/FrontendSoftware/src/components/FTA/FTA.vue index ee87bf0e0..edcadc4e0 100644 --- a/Apps/FrontendSoftware/src/components/FTA/FTA.vue +++ b/Apps/FrontendSoftware/src/components/FTA/FTA.vue @@ -1,235 +1,24 @@ -