From f60e0f7f333d172fc4a66bdd2250cb94b0d3aa82 Mon Sep 17 00:00:00 2001 From: Hadley King Date: Thu, 25 Jul 2024 17:02:31 -0400 Subject: [PATCH] 24.07.25 (#436) * Update README.md (#411) * Update README.md * Added Workflow diagram * Added logo image * fixed script driver not saving (#422) Co-authored-by: tianywan819 <57418894+tianywan819@users.noreply.github.com> * Embargo saving issue (#426) * fixed script driver not saving * Fixed Embargo Time not saving and prepopulate issue --------- Co-authored-by: tianywan819 <57418894+tianywan819@users.noreply.github.com> * Correct the logic for checking the existence of `extensionDomain` in the `bco` object within the `ExtensionDomain` component. This fix ensures accurate handling of the `extensionDomain` property. (#427) - Update check from `"extension_domain" in bco` to `typeof bco.extensionDomain !== "undefined"`. - Remove unnecessary comment from the remove button. These changes improve the reliability and readability of the component. Changes to be committed: modified: client/src/components/builder/extensionDomain.js * Contribution doc and related documentations. (#434) * Create Contribute doc * Create Contribute doc * Update CONTRIBUTING.md * Update code_of_conduct.md * Update CONTRIBUTING.md * Update CONTRIBUTING.md * Update CONTRIBUTING.md * Update * Added contribution documents * Update contribution doc * PopUp box on Builder page on how to create bco (#435) --------- Co-authored-by: Reeya Gupta <56750374+Reeya123@users.noreply.github.com> Co-authored-by: Tianyi Wang <90009613+tiwa1154@users.noreply.github.com> Co-authored-by: tianywan819 <57418894+tianywan819@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE.md | 0 CONTRIBUTING.md | 118 +++ README.md | 111 ++- client/package-lock.json | 675 +++++++++--------- client/package.json | 5 +- client/src/App.css | 32 +- client/src/components/builder/HelpBox.jsx | 42 ++ .../src/components/builder/executionDomain.js | 5 +- .../src/components/builder/extensionDomain.js | 6 +- client/src/components/builder/index.js | 6 +- .../components/builder/provenanceDomain.js | 12 +- .../src/components/builder/specialFeilds.js | 85 ++- docs/BCO Portal git workflow.drawio.png | Bin 0 -> 178924 bytes docs/README.md | 0 docs/contributing/code_of_conduct.md | 64 ++ docs/contributing/development_setup.md | 26 + docs/contributing/index.md | 0 docs/contributing/license.md | 0 docs/contributing/style_guides.md | 1 + docs/contributing/testing.md | 0 20 files changed, 809 insertions(+), 379 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CONTRIBUTING.md create mode 100644 client/src/components/builder/HelpBox.jsx create mode 100644 docs/BCO Portal git workflow.drawio.png create mode 100644 docs/README.md create mode 100644 docs/contributing/code_of_conduct.md create mode 100644 docs/contributing/development_setup.md create mode 100644 docs/contributing/index.md create mode 100644 docs/contributing/license.md create mode 100644 docs/contributing/style_guides.md create mode 100644 docs/contributing/testing.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..e69de29b diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..964e7dc9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,118 @@ +# Contributing to the Biocompute Project + +Thank you for considering contributing to the Biocompute project! This document outlines the process to help you contribute. + +All types of contributions are encouraged and valued. See the Table of Contents for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉 + +> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: +> - Star the project +> - Tweet about it +> - Refer this project in your project's readme +> - Mention the project at local meetups and tell your friends/colleagues + +## Table of Contents + +- [Code of Conduct](./docs/contributing/code_of_conduct.md) +- [How to Contribute](#how-to-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Submitting Code Changes](#submitting-code-changes) +- [Development Setup](#development-setup) +- [Style Guides](#style-guides) + - [Code Style](#code-style) + - [Commit Messages](#commit-messages) +- [Testing](#testing) +- [Documentation](#documentation) +- [License](#license) + +## Code of Conduct + +This project adheres to the Contributor Covenant [Code of Conduct](./docs/contributing/code_of_conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to the [Team](mailto:hadley_king@email.gwu.edu ). + +## I Have a Question + +> If you want to ask a question, we assume that you have read the available [Documentation](/README.md). + +Before you ask a question, it is best to search for existing [Issues](https://github.com/biocompute-objects/portal_userdb/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first. + +If you then still feel the need to ask a question and need clarification, we recommend the following: + +- Open an [Issue](https://github.com/biocompute-objects/portal_userdb/issues/new/choose). +- Provide as much context as you can about what you're running into. +- Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. + +We will then take care of the issue as soon as possible. +## How to Contribute + +### Reporting Bugs + +#### Before Submitting a Bug Report +A good bug report shouldn’t leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. +If you find a bug, please create an issue on GitHub with the following information: + +- A clear and descriptive title. +- Steps to reproduce the issue. +- Expected and actual behavior. +- Screenshots or logs, if applicable. +- Any other information that might be helpful. + +### Suggesting Enhancements + +This section guides you through submitting an enhancement suggestion for Biocompute project, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions. + + +#### Before Submitting an Enhancement + +- Make sure that you are using the latest version. +- Read the [documentation](/README.md) carefully and find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](https://github.com/biocompute-objects/portal_userdb/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. +- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library. + + +#### How Do I Submit a Good Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](https://github.com/biocompute-objects/portal_userdb/issues).Provide the following: + +- Use a clear and descriptive title for the issue. +- A detailed explanation of the enhancement and why it would be useful. +- Any relevant examples or references. + +### Submitting Code Changes + +1. Fork the repository. +2. Create a new branch from `Development` (e.g., `feature-branch`). +3. Make your changes. +4. Ensure your code adheres to the [code style](./docs/contributing/style_guides.md). +5. Commit your changes with a descriptive message. +6. Push your branch to your fork. +7. Create a pull request (PR) to the `Development` branch of the original repository. + +Please ensure your PR includes: + +- A clear title and description of the change. +- References to any related issues (e.g., `Closes #123`). +- Necessary documentation updates. + +## Development Setup + +To set up a local development environment, follow the instructions in the [Development Setup](./docs/contributing/development_setup.md) guide. + +## Style Guides + +### Code Style + +Follow the existing code style. We use ESLint for JavaScript. Run `npm run lint` to check your code. + +### Commit Messages + +- Use the present tense ("Add feature" not "Added feature"). +- Capitalize the first letter. +- No period at the end. +- Include references to issues and pull requests when relevant. + +## Testing + +Please add tests for your changes and ensure all existing tests pass. Run the tests with: + +```sh +npm test diff --git a/README.md b/README.md index 8e5f7357..2188ceec 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,106 @@ -# BCO Portal +![biocompute](https://github.com/user-attachments/assets/785e87f2-66a5-4a17-821b-c52bdf3c56e6) -The BCO Portal consists of two applications. +# BioCompute: A Platform for Bioinformatics Analysis Workflow +## Introduction +BioCompute is a platform designed to facilitate the documentation and communication of bioinformatics analysis workflows. Following the IEEE 2791-2020 standard, BioCompute aims to ease communication burdens between research centers, organizations, and industries by providing a standardized, human- and machine-readable format for BioCompute Objects (BCOs). -## BCO Portal Server (AKA UserDB) -The [`SERVER`](server/README.md) directory contains the UserDB application. It utilizes Django (Python) and a SQLite3 DB. +## Key Features +- **Standardized Documentation**: Adopts the IEEE 2791-2020 standard for bioinformatics analyses. +- **User-Friendly Interface**: Build BioCompute Objects through an intuitive web portal. +- **Extensible**: Supports integration with various bioinformatics tools and databases. +- **Community-Driven**: Open-source and welcoming contributions from the community. -## BCO Portal Client (AKA Portal) - The [`CLIENT`](client/README.md) directory contains the UI application. It utilizes React and Redux ToolKit. +## Quickstart Guide -## Deployment instructions can be found here: -- [Local deployment for devleopment](docs/localDeployment.md) -- [Production deployment](docs/productionDeployment.md) -- [Docker deployment](docs/dockerDeployment.md) [WIP] -- [FAQ and trouble shooting](docs/faq.md) +Follow these steps to get started with BioCompute: +1. Clone the Repository: + +`git clone https://github.com/biocompute/bcodb.git +cd bcodb` + +3. Set Up the Environment: + +Ensure you have Python and Node.js installed. + +Install dependencies: + +`pip install -r requirements.txt +npm install` + +4. Run the Server: + +`cd server +python manage.py runserver` + +5. Run the Client: + +`cd client +npm start` + +Access the Portal: +Open your web browser and navigate to **'http://localhost:3000'**. + +## Architecture + +BioCompute consists of two main components: + +- **BCO Portal Server (UserDB)**: + +Located in the **[`SERVER`](server/README.md)** directory. +Built with Django (Python) and uses SQLite3 for the database. + +- **BCO Portal Client (Portal)**: + +Located in the **[`CLIENT`](client/README.md)** directory. +Built with React and Redux ToolKit. + +## Workflow Diagram +![BCO Portal git workflow drawio](https://github.com/user-attachments/assets/5ebf19bd-a99a-4023-9be0-6f74930f891c) + +## Installation +### Local Deployment for Development + +Clone the Repository: + +`git clone https://github.com/biocompute/bcodb.git +cd bcodb` + +Install Dependencies: + +`pip install -r requirements.txt +npm install +` + +Run the Applications: + +`cd server +python manage.py runserver +cd ../client +npm start` + +Follow the detailed instructions in our [Local deployment Guide](docs/localDeployment.md) +### Production Deployment +Follow the detailed instructions in our [Production deployment Guide](docs/productionDeployment.md). + +### Docker Deployment +Our [Docker deployment Guide](docs/dockerDeployment.md) is currently a work in progress. Stay tuned for updates. + +## Contributing +We welcome contributions from the community! To contribute: + +Fork the repository on GitHub. +Create a feature branch. +Commit your changes. +Submit a pull request. +Please refer to our [Contributing Guide](/CONTRIBUTING.md) for more details. + +## FAQ and Troubleshooting +Find solutions to common issues in our [FAQ and trouble shooting Guide](docs/faq.md). + +## License +BioCompute is licensed under the Apache 2.0 License. See the [LICENSE]() file for more details. + +## Acknowledgements +We thank all our contributors and the wider community for their support. diff --git a/client/package-lock.json b/client/package-lock.json index c1caa888..7438059c 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -51,6 +51,7 @@ "yup": "^0.32.11" }, "devDependencies": { + "cross-env": "^7.0.3", "eslint": "^8.31.0" } }, @@ -4778,6 +4779,95 @@ "version": "2.5.0", "license": "0BSD" }, + "node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "node_modules/@testing-library/dom/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@testing-library/dom/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@testing-library/jest-dom": { "version": "5.16.5", "license": "MIT", @@ -4881,6 +4971,12 @@ "node": ">=10.13.0" } }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "peer": true + }, "node_modules/@types/babel__core": { "version": "7.1.20", "license": "MIT", @@ -5825,10 +5921,11 @@ } }, "node_modules/aria-query": { - "version": "5.1.3", - "license": "Apache-2.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/array-flatten": { @@ -5962,16 +6059,6 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/axe-core": { "version": "4.5.2", "license": "MPL-2.0", @@ -6907,6 +6994,24 @@ "node": ">=10" } }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -7358,30 +7463,6 @@ "version": "0.7.0", "license": "MIT" }, - "node_modules/deep-equal": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "license": "MIT" @@ -7792,23 +7873,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/es-get-iterator": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-module-lexer": { "version": "0.9.3", "license": "MIT" @@ -8943,13 +9007,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.2", "license": "MIT", @@ -9382,16 +9439,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "license": "ISC" @@ -9814,20 +9861,6 @@ "node": ">= 10" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "license": "MIT" @@ -9947,13 +9980,6 @@ "version": "1.1.3", "license": "MIT" }, - "node_modules/is-map": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-module": { "version": "1.0.0", "license": "MIT" @@ -10044,13 +10070,6 @@ "node": ">=6" } }, - "node_modules/is-set": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "license": "MIT", @@ -10097,34 +10116,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "license": "MIT" }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "license": "MIT", @@ -10135,17 +10130,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "license": "MIT", @@ -10156,10 +10140,6 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "2.0.5", - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "license": "ISC" @@ -13731,6 +13711,15 @@ "node": ">=10" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/magic-string": { "version": "0.25.9", "license": "MIT", @@ -13946,6 +13935,15 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "peer": true, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.2", "license": "MIT" @@ -14140,20 +14138,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.5", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "license": "MIT", @@ -17965,6 +17949,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/ua-parser-js": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", @@ -18676,37 +18673,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "license": "MIT", @@ -20187,10 +20153,12 @@ } }, "@csstools/postcss-unset-value": { - "version": "1.0.2" + "version": "1.0.2", + "requires": {} }, "@csstools/selector-specificity": { - "version": "2.0.2" + "version": "2.0.2", + "requires": {} }, "@date-io/core": { "version": "2.16.0" @@ -20320,7 +20288,8 @@ "@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", - "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==" + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "requires": {} }, "@emotion/utils": { "version": "1.2.1", @@ -21331,7 +21300,8 @@ } }, "@material-ui/types": { - "version": "5.1.0" + "version": "5.1.0", + "requires": {} }, "@material-ui/utils": { "version": "4.11.3", @@ -21497,7 +21467,8 @@ "@mui/types": { "version": "7.2.14", "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", - "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==" + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", + "requires": {} }, "@mui/utils": { "version": "5.15.14", @@ -21639,7 +21610,8 @@ } }, "@rjsf/material-ui": { - "version": "5.0.0-beta.14" + "version": "5.0.0-beta.14", + "requires": {} }, "@rjsf/utils": { "version": "5.0.0-beta.14", @@ -21832,6 +21804,73 @@ } } }, + "@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "peer": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@testing-library/jest-dom": { "version": "5.16.5", "requires": { @@ -21891,6 +21930,12 @@ "@trysound/sax": { "version": "0.2.0" }, + "@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "peer": true + }, "@types/babel__core": { "version": "7.1.20", "requires": { @@ -22408,10 +22453,12 @@ } }, "acorn-import-assertions": { - "version": "1.8.0" + "version": "1.8.0", + "requires": {} }, "acorn-jsx": { - "version": "5.3.2" + "version": "5.3.2", + "requires": {} }, "acorn-node": { "version": "1.8.2", @@ -22475,7 +22522,8 @@ } }, "ajv-keywords": { - "version": "3.5.2" + "version": "3.5.2", + "requires": {} }, "ajv8": { "version": "npm:ajv@8.11.2", @@ -22526,9 +22574,11 @@ } }, "aria-query": { - "version": "5.1.3", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "requires": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "array-flatten": { @@ -22601,9 +22651,6 @@ "postcss-value-parser": "^4.2.0" } }, - "available-typed-arrays": { - "version": "1.0.5" - }, "axe-core": { "version": "4.5.2" }, @@ -22737,7 +22784,8 @@ } }, "babel-plugin-named-asset-import": { - "version": "0.3.8" + "version": "0.3.8", + "requires": {} }, "babel-plugin-polyfill-corejs2": { "version": "0.3.3", @@ -22887,7 +22935,8 @@ "version": "1.0.0" }, "bootstrap": { - "version": "5.2.3" + "version": "5.2.3", + "requires": {} }, "brace-expansion": { "version": "1.1.11", @@ -23197,6 +23246,15 @@ "yaml": "^1.10.0" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "cross-fetch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", @@ -23223,7 +23281,8 @@ } }, "css-declaration-sorter": { - "version": "6.3.1" + "version": "6.3.1", + "requires": {} }, "css-has-pseudo": { "version": "3.0.4", @@ -23296,7 +23355,8 @@ } }, "css-prefers-color-scheme": { - "version": "6.0.3" + "version": "6.0.3", + "requires": {} }, "css-select": { "version": "4.3.0", @@ -23385,7 +23445,8 @@ } }, "cssnano-utils": { - "version": "3.1.0" + "version": "3.1.0", + "requires": {} }, "csso": { "version": "4.2.0", @@ -23453,26 +23514,6 @@ "dedent": { "version": "0.7.0" }, - "deep-equal": { - "version": "2.1.0", - "requires": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.8" - } - }, "deep-is": { "version": "0.1.4" }, @@ -23723,19 +23764,6 @@ "es-array-method-boxes-properly": { "version": "1.0.0" }, - "es-get-iterator": { - "version": "1.1.2", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - } - }, "es-module-lexer": { "version": "0.9.3" }, @@ -24059,7 +24087,8 @@ } }, "eslint-plugin-react-hooks": { - "version": "4.6.0" + "version": "4.6.0", + "requires": {} }, "eslint-plugin-testing-library": { "version": "5.9.1", @@ -24468,12 +24497,6 @@ "follow-redirects": { "version": "1.15.2" }, - "for-each": { - "version": "0.3.3", - "requires": { - "is-callable": "^1.1.3" - } - }, "fork-ts-checker-webpack-plugin": { "version": "6.5.2", "requires": { @@ -24712,12 +24735,6 @@ "slash": "^3.0.0" } }, - "gopd": { - "version": "1.0.1", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, "graceful-fs": { "version": "4.2.10" }, @@ -24894,7 +24911,8 @@ } }, "icss-utils": { - "version": "5.1.0" + "version": "5.1.0", + "requires": {} }, "idb": { "version": "7.1.1" @@ -24961,13 +24979,6 @@ "ipaddr.js": { "version": "2.0.1" }, - "is-arguments": { - "version": "1.1.1", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1" }, @@ -25026,9 +25037,6 @@ "is-in-browser": { "version": "1.1.3" }, - "is-map": { - "version": "2.0.2" - }, "is-module": { "version": "1.0.0" }, @@ -25069,9 +25077,6 @@ "is-root": { "version": "2.1.0" }, - "is-set": { - "version": "2.0.2" - }, "is-shared-array-buffer": { "version": "1.0.2", "requires": { @@ -25093,44 +25098,21 @@ "has-symbols": "^1.0.2" } }, - "is-typed-array": { - "version": "1.1.10", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, "is-typedarray": { "version": "1.0.0" }, - "is-weakmap": { - "version": "2.0.1" - }, "is-weakref": { "version": "1.0.2", "requires": { "call-bind": "^1.0.2" } }, - "is-weakset": { - "version": "2.0.2", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, "is-wsl": { "version": "2.2.0", "requires": { "is-docker": "^2.0.0" } }, - "isarray": { - "version": "2.0.5" - }, "isexe": { "version": "2.0.0" }, @@ -26276,7 +26258,8 @@ } }, "jest-pnp-resolver": { - "version": "1.2.3" + "version": "1.2.3", + "requires": {} }, "jest-regex-util": { "version": "27.5.1" @@ -27430,6 +27413,12 @@ "yallist": "^4.0.0" } }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "peer": true + }, "magic-string": { "version": "0.25.9", "requires": { @@ -27550,6 +27539,12 @@ "minimist": "^1.2.6" } }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "peer": true + }, "ms": { "version": "2.1.2" }, @@ -27670,13 +27665,6 @@ "object-inspect": { "version": "1.12.2" }, - "object-is": { - "version": "1.1.5", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "object-keys": { "version": "1.1.1" }, @@ -27972,7 +27960,8 @@ } }, "postcss-browser-comments": { - "version": "4.0.0" + "version": "4.0.0", + "requires": {} }, "postcss-calc": { "version": "8.2.4", @@ -28046,16 +28035,20 @@ } }, "postcss-discard-comments": { - "version": "5.1.2" + "version": "5.1.2", + "requires": {} }, "postcss-discard-duplicates": { - "version": "5.1.0" + "version": "5.1.0", + "requires": {} }, "postcss-discard-empty": { - "version": "5.1.1" + "version": "5.1.1", + "requires": {} }, "postcss-discard-overridden": { - "version": "5.1.0" + "version": "5.1.0", + "requires": {} }, "postcss-double-position-gradients": { "version": "3.1.2", @@ -28071,7 +28064,8 @@ } }, "postcss-flexbugs-fixes": { - "version": "5.0.2" + "version": "5.0.2", + "requires": {} }, "postcss-focus-visible": { "version": "6.0.4", @@ -28086,10 +28080,12 @@ } }, "postcss-font-variant": { - "version": "5.0.0" + "version": "5.0.0", + "requires": {} }, "postcss-gap-properties": { - "version": "3.0.5" + "version": "3.0.5", + "requires": {} }, "postcss-image-set-function": { "version": "4.0.7", @@ -28106,7 +28102,8 @@ } }, "postcss-initial": { - "version": "4.0.1" + "version": "4.0.1", + "requires": {} }, "postcss-js": { "version": "4.0.0", @@ -28145,10 +28142,12 @@ } }, "postcss-logical": { - "version": "5.0.4" + "version": "5.0.4", + "requires": {} }, "postcss-media-minmax": { - "version": "5.0.0" + "version": "5.0.0", + "requires": {} }, "postcss-merge-longhand": { "version": "5.1.7", @@ -28195,7 +28194,8 @@ } }, "postcss-modules-extract-imports": { - "version": "3.0.0" + "version": "3.0.0", + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -28239,7 +28239,8 @@ } }, "postcss-normalize-charset": { - "version": "5.1.0" + "version": "5.1.0", + "requires": {} }, "postcss-normalize-display-values": { "version": "5.1.0", @@ -28308,7 +28309,8 @@ } }, "postcss-page-break": { - "version": "3.0.4" + "version": "3.0.4", + "requires": {} }, "postcss-place": { "version": "7.0.5", @@ -28390,7 +28392,8 @@ } }, "postcss-replace-overflow-wrap": { - "version": "4.0.0" + "version": "4.0.0", + "requires": {} }, "postcss-selector-not": { "version": "6.0.1", @@ -28782,7 +28785,8 @@ "react-multi-select-component": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/react-multi-select-component/-/react-multi-select-component-4.3.4.tgz", - "integrity": "sha512-Ui/bzCbROF4WfKq3OKWyQJHmy/bd1mW7CQM+L83TfiltuVvHElhKEyPM3JzO9urIcWplBUKv+kyxqmEnd9jPcA==" + "integrity": "sha512-Ui/bzCbROF4WfKq3OKWyQJHmy/bd1mW7CQM+L83TfiltuVvHElhKEyPM3JzO9urIcWplBUKv+kyxqmEnd9jPcA==", + "requires": {} }, "react-redux": { "version": "8.0.5", @@ -28878,7 +28882,8 @@ } }, "react-side-effect": { - "version": "2.1.2" + "version": "2.1.2", + "requires": {} }, "react-textarea-autosize": { "version": "8.4.0", @@ -28954,7 +28959,8 @@ } }, "redux-thunk": { - "version": "2.4.2" + "version": "2.4.2", + "requires": {} }, "regenerate": { "version": "1.4.2" @@ -29095,7 +29101,8 @@ "version": "1.0.4" }, "rifm": { - "version": "0.12.1" + "version": "0.12.1", + "requires": {} }, "rimraf": { "version": "3.0.2", @@ -29532,7 +29539,8 @@ "version": "3.1.1" }, "style-loader": { - "version": "3.3.1" + "version": "3.3.1", + "requires": {} }, "stylehacks": { "version": "5.1.1", @@ -29840,6 +29848,12 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "peer": true + }, "ua-parser-js": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", @@ -29920,12 +29934,14 @@ "use-composed-ref": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", - "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "requires": {} }, "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} }, "use-latest": { "version": "1.2.1", @@ -29936,7 +29952,8 @@ } }, "use-sync-external-store": { - "version": "1.2.0" + "version": "1.2.0", + "requires": {} }, "util-deprecate": { "version": "1.0.2" @@ -30185,7 +30202,8 @@ } }, "ws": { - "version": "8.11.0" + "version": "8.11.0", + "requires": {} } } }, @@ -30266,26 +30284,6 @@ "is-symbol": "^1.0.3" } }, - "which-collection": { - "version": "1.0.1", - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, - "which-typed-array": { - "version": "1.1.9", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - } - }, "word-wrap": { "version": "1.2.3" }, @@ -30543,7 +30541,8 @@ } }, "ws": { - "version": "7.5.9" + "version": "7.5.9", + "requires": {} }, "xml-name-validator": { "version": "3.0.0" diff --git a/client/package.json b/client/package.json index d6889ba1..4175486d 100644 --- a/client/package.json +++ b/client/package.json @@ -46,8 +46,8 @@ "yup": "^0.32.11" }, "scripts": { - "start": "DISABLE_ESLINT_PLUGIN=true react-scripts start", - "build": "DISABLE_ESLINT_PLUGIN=true react-scripts build", + "start": "cross-env DISABLE_ESLINT_PLUGIN=true react-scripts start", + "build": "cross-env DISABLE_ESLINT_PLUGIN=true react-scripts build", "test": "react-scripts test --transformIgnorePatterns \"node_modules/(?!@toolz/allow-react)/\" --env=jsdom", "eject": "react-scripts eject", "lint": "eslint \"src/**/*.{js,jsx}\"", @@ -72,6 +72,7 @@ ] }, "devDependencies": { + "cross-env": "^7.0.3", "eslint": "^8.31.0" } } diff --git a/client/src/App.css b/client/src/App.css index 1ce0c782..cdf74c90 100644 --- a/client/src/App.css +++ b/client/src/App.css @@ -450,4 +450,34 @@ border-style: inherit; width: max-content; grid-auto-rows: auto; -} \ No newline at end of file +} + +.popup { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; +} + +.popup-content { + background: white; + padding: 20px; + border-radius: 5px; + text-align: center; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Add some shadow for better visibility */ + position: relative; +} + +.popup-content h2 { + margin-top: 0; +} + +.popup-content button { + margin: 10px; +} diff --git a/client/src/components/builder/HelpBox.jsx b/client/src/components/builder/HelpBox.jsx new file mode 100644 index 00000000..5bca90e0 --- /dev/null +++ b/client/src/components/builder/HelpBox.jsx @@ -0,0 +1,42 @@ +import React, { useState, useEffect } from 'react'; + +const HelpPopup = () => { + const [isVisible, setIsVisible] = useState(false); + + useEffect(() => { + const showPopup = localStorage.getItem('showHelpPopup'); + if (showPopup !== 'false') { + setIsVisible(true); + } + }, []); + + const handleYesClick = () => { + window.open('https://wiki.biocomputeobject.org/Buildbcos', '_blank'); + }; + + const handleNoClick = () => { + setIsVisible(false); + }; + + const handleDontShowAgain = () => { + localStorage.setItem('showHelpPopup', 'false'); + setIsVisible(false); + }; + + if (!isVisible) return null; + + return ( +
+
+

Need help creating a BCO?

+

We have detailed instructions on our wiki page. Would you like to visit it?

+ + + + +
+
+ ); +}; + +export default HelpPopup; diff --git a/client/src/components/builder/executionDomain.js b/client/src/components/builder/executionDomain.js index 77f94aab..f6feadbd 100644 --- a/client/src/components/builder/executionDomain.js +++ b/client/src/components/builder/executionDomain.js @@ -42,9 +42,10 @@ export const ExecutionDomain = ({onSave}) => { { diff --git a/client/src/components/builder/extensionDomain.js b/client/src/components/builder/extensionDomain.js index 39b42a1b..653f214d 100644 --- a/client/src/components/builder/extensionDomain.js +++ b/client/src/components/builder/extensionDomain.js @@ -12,10 +12,10 @@ import Tooltip from "@mui/material/Tooltip"; export const ExtensionDomain = ({onSave}) => { const dispatch = useDispatch(); const bco = useSelector(state => state.bco.data) - let has_extension = "extension_domain" in bco + let has_extension = typeof bco.extensionDomain !== "undefined"; const extensionDomain = has_extension ? bco.extension_domain : []; const [newSchema, setNewSchema] = React.useState("") - + const addExtension = async () => { dispatch(getExtension({newSchema})) .unwrap() @@ -88,8 +88,6 @@ export const ExtensionDomain = ({onSave}) => { fullWidth onClick={() => removeRows(index)}> - - {/* Remove */} ) })) diff --git a/client/src/components/builder/index.js b/client/src/components/builder/index.js index f2377f60..8e7e7ca1 100644 --- a/client/src/components/builder/index.js +++ b/client/src/components/builder/index.js @@ -26,7 +26,7 @@ import { useDispatch, useSelector } from "react-redux" import biocomputing from "../../images/biocomputing.gif" import ThirdBox from "../ThirdBox"; import ErrorBoundary from "../ErrorBoundry"; - +import HelpPopup from "./HelpBox"; import { getDraftBco, getTempDraftBco, @@ -104,10 +104,14 @@ export default function BuilderColorCode () { }, [bco]) return ( + + + + Object ID: {bco.object_id} diff --git a/client/src/components/builder/provenanceDomain.js b/client/src/components/builder/provenanceDomain.js index 064c014b..b1d3f0ef 100644 --- a/client/src/components/builder/provenanceDomain.js +++ b/client/src/components/builder/provenanceDomain.js @@ -4,7 +4,7 @@ import {Card, CardContent, CardHeader, Typography, Grid, Button, TextField } fro import { Formik, Form, FieldArray } from "formik"; import { Contribution, FormObserver, Reviewer, Next } from "./components"; import { useSelector, useDispatch } from "react-redux" -import { BaisicDateTimePicker, MyTextField } from "./specialFeilds"; +import { BaisicDateTimePicker, MyTextField, EmbargoDateTimePicker } from "./specialFeilds"; import { updateProvenanceDomain, updateModified } from "../../slices/bcoSlice"; import "../../App.css"; import RemoveCircleIcon from "@mui/icons-material/RemoveCircle"; @@ -48,6 +48,10 @@ export const ProvenanceDomain = ({onSave} ) => { "obsolete_after": has_obsolete ? provenanceDomain["obsolete_after"] : [], "contributors": has_contributors ? provenanceDomain["contributors"] : [], "review": has_review ? provenanceDomain["review"] : [], + "embargo": embargo ? { + start_time: (provenanceDomain["embargo"] && provenanceDomain["embargo"].start_time) || null, + end_time: (provenanceDomain["embargo"] && provenanceDomain["embargo"].end_time) || null, + } : { start_time: null, end_time: null }, } } validationSchema={Yup.object().shape({ @@ -182,13 +186,13 @@ export const ProvenanceDomain = ({onSave} ) => { Start time: - + End Time: - +