From 412759f83d1ef5de6110bec1eac1e3bf5d9c5cba Mon Sep 17 00:00:00 2001 From: relf Date: Mon, 4 May 2026 16:35:07 +0200 Subject: [PATCH 1/3] Modernize javascript toolchain --- .eslintignore | 1 - .eslintrc.json | 39 ---- .prettierignore | 14 ++ .prettierrc.json | 6 + eslint.config.cjs | 85 +++++++++ package.json | 23 +-- yarn.lock | 455 ++++++---------------------------------------- 7 files changed, 170 insertions(+), 453 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 eslint.config.cjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 9cc6ea40..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -app/javascript/mda_viewer/components/riek \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 45f680f0..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "airbnb" - ], - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 2018, - "sourceType": "module" - }, - "plugins": [ - "react" - ], - "rules": { - "no-underscore-dangle": "off", - "no-console": "off", - "global-require": "off", - "react/forbid-prop-types": "off", - "no-restricted-syntax": "off", - "linebreak-style": "off", - "max-classes-per-file": "off", - "import/no-unresolved": "off", - "camelcase": "off", - "import/extensions": [ - "warn", - "never" - ] - } -} \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..f0ed2aad --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +node_modules +.yarn +public/packs +public/packs-test +public/assets +vendor +tmp +log +storage +upload +*_out +reports +db/*.sqlite3 +app/javascript/mda_viewer/components/riek diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..5d82119b --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "singleQuote": true, + "trailingComma": "es5", + "printWidth": 100, + "semi": true +} diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 00000000..24364a8c --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,85 @@ +const js = require("@eslint/js"); +const globals = require("globals"); +const reactPlugin = require("eslint-plugin-react"); +const reactHooksPlugin = require("eslint-plugin-react-hooks"); +const jsxA11yPlugin = require("eslint-plugin-jsx-a11y"); +const eslintConfigPrettier = require("eslint-config-prettier"); + +module.exports = [ + { + ignores: [ + "node_modules/**", + "public/packs/**", + "public/packs-test/**", + "public/assets/**", + "vendor/**", + "tmp/**", + "log/**", + "storage/**", + "upload/**", + "**/*_out/**", + "reports/**", + "db/*.sqlite3", + "app/javascript/mda_viewer/components/riek/**" + ] + }, + { + linterOptions: { + reportUnusedDisableDirectives: "off" + } + }, + js.configs.recommended, + { + files: ["app/javascript/**/*.{js,jsx}"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + parserOptions: { + ecmaFeatures: { + jsx: true + } + }, + globals: { + ...globals.browser, + ...globals.es2021, + ...globals.commonjs, + require: "readonly", + module: "readonly", + $: "readonly", + jQuery: "readonly", + App: "writable" + } + }, + plugins: { + react: reactPlugin, + "react-hooks": reactHooksPlugin, + "jsx-a11y": jsxA11yPlugin + }, + settings: { + react: { + version: "detect" + } + }, + rules: { + ...reactPlugin.configs.recommended.rules, + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "warn", + "react/react-in-jsx-scope": "off", + "react/prop-types": "off", + "no-unused-vars": "warn", + "no-console": "off", + "no-underscore-dangle": "off" + } + }, + { + files: ["*.{js,cjs,mjs}", "config/**/*.js"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "commonjs", + globals: { + ...globals.node + } + } + }, + eslintConfigPrettier +]; diff --git a/package.json b/package.json index 5a360438..f925003e 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,12 @@ "xdsmjs": "2.0.1-rc.0" }, "version": "0.1.0", + "scripts": { + "lint": "eslint app/javascript config/webpack babel.config.js eslint.config.cjs", + "lint:fix": "eslint app/javascript config/webpack babel.config.js eslint.config.cjs --fix", + "format": "prettier \"app/javascript/**/*.{js,jsx}\" \"config/webpack/**/*.js\" \"*.{js,cjs,mjs,json}\" --write", + "format:check": "prettier \"app/javascript/**/*.{js,jsx}\" \"config/webpack/**/*.js\" \"*.{js,cjs,mjs,json}\" --check" + }, "babel": { "presets": [ "./node_modules/shakapacker/package/babel/preset.js" @@ -70,19 +76,14 @@ "defaults" ], "devDependencies": { - "@babel/eslint-parser": "^7.28.5", + "@eslint/js": "^9.39.1", "eslint": "^9.39.1", - "eslint-config-airbnb": "^19.0.2", - "eslint-config-react": "^1.1.7", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.20.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-n": "^17.23.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^7.1.0", - "eslint-plugin-react": "^7.20.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-webpack-plugin": "^6.0.0", + "globals": "^16.4.0", + "prettier": "^3.6.2", "webpack-dev-server": "^5.0.4" }, "packageManager": "yarn@4.14.1" diff --git a/yarn.lock b/yarn.lock index 1fe35307..5637eb03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -67,20 +67,6 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:^7.28.5": - version: 7.28.6 - resolution: "@babel/eslint-parser@npm:7.28.6" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" - eslint-visitor-keys: "npm:^2.1.0" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/58a85f67a056ba8389978c4654b690b890a6dcd19aa9655c5d7d9349a0c25f124cabad8a190b6bf7045a063aeee1b8e2ab23cfe4d8fa0e0517716a8b70e758bc - languageName: node - linkType: hard - "@babel/generator@npm:^7.29.0": version: 7.29.1 resolution: "@babel/generator@npm:7.29.1" @@ -1271,7 +1257,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.5.0, @eslint-community/eslint-utils@npm:^4.8.0": +"@eslint-community/eslint-utils@npm:^4.8.0": version: 4.9.1 resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: @@ -1282,7 +1268,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.12.1": +"@eslint-community/regexpp@npm:^4.12.1": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d @@ -1335,7 +1321,7 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.39.4": +"@eslint/js@npm:9.39.4, @eslint/js@npm:^9.39.1": version: 9.39.4 resolution: "@eslint/js@npm:9.39.4" checksum: 10c0/5aa7dea2cbc5decf7f5e3b0c6f86a084ccee0f792d288ca8e839f8bc1b64e03e227068968e49b26096e6f71fd857ab6e42691d1b993826b9a3883f1bdd7a0e46 @@ -1891,15 +1877,6 @@ __metadata: languageName: node linkType: hard -"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": - version: 5.1.1-v1 - resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" - dependencies: - eslint-scope: "npm:5.1.1" - checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 - languageName: node - linkType: hard - "@noble/hashes@npm:1.4.0": version: 1.4.0 resolution: "@noble/hashes@npm:1.4.0" @@ -2332,13 +2309,6 @@ __metadata: languageName: node linkType: hard -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 10c0/b5bcfb0d87f7d1c1c7c0f7693f53b07866ed9fec4c34a97a8c948fb9a7c0082e416ce4d3b60beb4f5e167cbe04cdeefbf6771320f3ede059b9ce91188c409a5b - languageName: node - linkType: hard - "@scarf/scarf@npm:=1.4.0": version: 1.4.0 resolution: "@scarf/scarf@npm:1.4.0" @@ -3150,7 +3120,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:^9.6.1": +"@types/eslint@npm:*": version: 9.6.1 resolution: "@types/eslint@npm:9.6.1" dependencies: @@ -3287,13 +3257,6 @@ __metadata: languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac - languageName: node - linkType: hard - "@types/mapbox__point-geometry@npm:*": version: 1.0.87 resolution: "@types/mapbox__point-geometry@npm:1.0.87" @@ -3933,7 +3896,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.9 resolution: "array-includes@npm:3.1.9" dependencies: @@ -3979,22 +3942,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.6": - version: 1.2.6 - resolution: "array.prototype.findlastindex@npm:1.2.6" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.9" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - es-shim-unscopables: "npm:^1.1.0" - checksum: 10c0/82559310d2e57ec5f8fc53d7df420e3abf0ba497935de0a5570586035478ba7d07618cb18e2d4ada2da514c8fb98a034aaf5c06caa0a57e2f7f4c4adedef5956 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3": +"array.prototype.flat@npm:^1.3.1": version: 1.3.3 resolution: "array.prototype.flat@npm:1.3.3" dependencies: @@ -4097,9 +4045,9 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.11.2 - resolution: "axe-core@npm:4.11.2" - checksum: 10c0/606ec10fce83d918a09b571309899bd396ff32485e7513444419e85ab3944f59f3ab46387a6f6b15c796dba9c5dc41007646b00f971f8f27fcc80ba92539ab25 + version: 4.11.4 + resolution: "axe-core@npm:4.11.4" + checksum: 10c0/c4aa83fc3eac5f7a0d0cb1a28f9d073acf0c06ce8daacc38608faa278c57ce084c028c850746b98817ae4c101c30c1a32e95ea34748c4b4c7419b9b81221ef84 languageName: node linkType: hard @@ -4866,13 +4814,6 @@ __metadata: languageName: node linkType: hard -"confusing-browser-globals@npm:^1.0.10": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 10c0/475d0a284fa964a5182b519af5738b5b64bf7e413cfd703c1b3496bf6f4df9f827893a9b221c0ea5873c1476835beb1e0df569ba643eff0734010c1eb780589e - languageName: node - linkType: hard - "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" @@ -5522,7 +5463,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.6, debug@npm:^3.2.7": +"debug@npm:^3.2.6": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -5899,7 +5840,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.20.0": +"enhanced-resolve@npm:^5.20.0": version: 5.20.1 resolution: "enhanced-resolve@npm:5.20.1" dependencies: @@ -6060,7 +6001,7 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": +"es-shim-unscopables@npm:^1.0.2": version: 1.1.0 resolution: "es-shim-unscopables@npm:1.1.0" dependencies: @@ -6164,146 +6105,18 @@ __metadata: languageName: node linkType: hard -"eslint-compat-utils@npm:^0.5.1": - version: 0.5.1 - resolution: "eslint-compat-utils@npm:0.5.1" - dependencies: - semver: "npm:^7.5.4" - peerDependencies: - eslint: ">=6.0.0" - checksum: 10c0/325e815205fab70ebcd379f6d4b5d44c7d791bb8dfe0c9888233f30ebabd9418422595b53a781b946c768d9244d858540e5e6129a6b3dd6d606f467d599edc6c - languageName: node - linkType: hard - -"eslint-config-airbnb-base@npm:^15.0.0": - version: 15.0.0 - resolution: "eslint-config-airbnb-base@npm:15.0.0" - dependencies: - confusing-browser-globals: "npm:^1.0.10" - object.assign: "npm:^4.1.2" - object.entries: "npm:^1.1.5" - semver: "npm:^6.3.0" - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - checksum: 10c0/93639d991654414756f82ad7860aac30b0dc6797277b7904ddb53ed88a32c470598696bbc6c503e066414024d305221974d3769e6642de65043bedf29cbbd30f - languageName: node - linkType: hard - -"eslint-config-airbnb@npm:^19.0.2": - version: 19.0.4 - resolution: "eslint-config-airbnb@npm:19.0.4" - dependencies: - eslint-config-airbnb-base: "npm:^15.0.0" - object.assign: "npm:^4.1.2" - object.entries: "npm:^1.1.5" - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - checksum: 10c0/867feeda45c4b480b1b8eff8fabc1bb107e837da8b48e5039e0c175ae6ad34af383b1924fc163bbfcef24a324e6651b1515e5bd12cbcbb19535a8838e2544a02 - languageName: node - linkType: hard - -"eslint-config-react@npm:^1.1.7": - version: 1.1.7 - resolution: "eslint-config-react@npm:1.1.7" - checksum: 10c0/cba465fef2a29dda476c5e630668f60eaf319aa90ada9a4b38cb029b361cc696581df5c30847a181bb9e5e366cfd32869729250a6c5fe31d8ce97135eae4abcb - languageName: node - linkType: hard - -"eslint-config-standard@npm:^17.0.0": - version: 17.1.0 - resolution: "eslint-config-standard@npm:17.1.0" +"eslint-config-prettier@npm:^10.1.8": + version: 10.1.8 + resolution: "eslint-config-prettier@npm:10.1.8" peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: "^15.0.0 || ^16.0.0 " - eslint-plugin-promise: ^6.0.0 - checksum: 10c0/d32f37ec4bea541debd3a8c9e05227673a9b1a9977da078195ee55fb371813ddf1349c75f2c33d76699fe3412f1e303181795f146e8d0e546b94fa0dce2bfbf9 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.10 - resolution: "eslint-import-resolver-node@npm:0.3.10" - dependencies: - debug: "npm:^3.2.7" - is-core-module: "npm:^2.16.1" - resolve: "npm:^2.0.0-next.6" - checksum: 10c0/2e05bdb148fe10a25b9a6fec3c4986a2e09e98bb99208491df82a9df7725f7bb312482d585404c440d42e58ab60debe7a48d9c992191851385b18d33a146e3c3 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.12.1": - version: 2.12.1 - resolution: "eslint-module-utils@npm:2.12.1" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/6f4efbe7a91ae49bf67b4ab3644cb60bc5bd7db4cb5521de1b65be0847ffd3fb6bce0dd68f0995e1b312d137f768e2a1f842ee26fe73621afa05f850628fdc40 - languageName: node - linkType: hard - -"eslint-plugin-es-x@npm:^7.8.0": - version: 7.8.0 - resolution: "eslint-plugin-es-x@npm:7.8.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.1.2" - "@eslint-community/regexpp": "npm:^4.11.0" - eslint-compat-utils: "npm:^0.5.1" - peerDependencies: - eslint: ">=8" - checksum: 10c0/002fda8c029bc5da41e24e7ac11654062831d675fc4f5f20d0de460e24bf1e05cd559000678ef3e46c48641190f4fc07ae3d57aa5e8b085ef5f67e5f63742614 - languageName: node - linkType: hard - -"eslint-plugin-es@npm:^3.0.0": - version: 3.0.1 - resolution: "eslint-plugin-es@npm:3.0.1" - dependencies: - eslint-utils: "npm:^2.0.0" - regexpp: "npm:^3.0.0" - peerDependencies: - eslint: ">=4.19.1" - checksum: 10c0/12ae730aa9603e680af048e1653aac15e529411b68b8d0da6e290700b17c695485af7c3f5360f531f80970786cab7288c2c1d4a58c35ec1bb89649897c016c4a - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.20.2": - version: 2.32.0 - resolution: "eslint-plugin-import@npm:2.32.0" - dependencies: - "@rtsao/scc": "npm:^1.1.0" - array-includes: "npm:^3.1.9" - array.prototype.findlastindex: "npm:^1.2.6" - array.prototype.flat: "npm:^1.3.3" - array.prototype.flatmap: "npm:^1.3.3" - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.12.1" - hasown: "npm:^2.0.2" - is-core-module: "npm:^2.16.1" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - object.groupby: "npm:^1.0.3" - object.values: "npm:^1.2.1" - semver: "npm:^6.3.1" - string.prototype.trimend: "npm:^1.0.9" - tsconfig-paths: "npm:^3.15.0" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: 10c0/bfb1b8fc8800398e62ddfefbf3638d185286edfed26dfe00875cc2846d954491b4f5112457831588b757fa789384e1ae585f812614c4797f0499fa234fd4a48b + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/e1bcfadc9eccd526c240056b1e59c5cd26544fe59feb85f38f4f1f116caed96aea0b3b87868e68b3099e55caaac3f2e5b9f58110f85db893e83a332751192682 languageName: node linkType: hard -"eslint-plugin-jsx-a11y@npm:^6.2.3": +"eslint-plugin-jsx-a11y@npm:^6.10.2": version: 6.10.2 resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" dependencies: @@ -6328,52 +6141,6 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-n@npm:^17.23.1": - version: 17.24.0 - resolution: "eslint-plugin-n@npm:17.24.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.5.0" - enhanced-resolve: "npm:^5.17.1" - eslint-plugin-es-x: "npm:^7.8.0" - get-tsconfig: "npm:^4.8.1" - globals: "npm:^15.11.0" - globrex: "npm:^0.1.2" - ignore: "npm:^5.3.2" - semver: "npm:^7.6.3" - ts-declaration-location: "npm:^1.0.6" - peerDependencies: - eslint: ">=8.23.0" - checksum: 10c0/65b6c9ccd4d69296df9bdc0517bdbbc71e5f1ec065e80623c49148ff7813829bd3568154a016fefc06749476f3fdadc0e1afa61a15695893a3ca3da161c9fe86 - languageName: node - linkType: hard - -"eslint-plugin-node@npm:^11.1.0": - version: 11.1.0 - resolution: "eslint-plugin-node@npm:11.1.0" - dependencies: - eslint-plugin-es: "npm:^3.0.0" - eslint-utils: "npm:^2.0.0" - ignore: "npm:^5.1.1" - minimatch: "npm:^3.0.4" - resolve: "npm:^1.10.1" - semver: "npm:^6.1.0" - peerDependencies: - eslint: ">=5.16.0" - checksum: 10c0/c7716adac4020cb852fd2410dcd8bdb13a227004de77f96d7f9806d0cf2274f24e0920a7ca73bcd72d90003696c1f17fdd9fe3ca218e64ee03dc2b840e4416fa - languageName: node - linkType: hard - -"eslint-plugin-promise@npm:^7.1.0": - version: 7.2.1 - resolution: "eslint-plugin-promise@npm:7.2.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/d494982faeeafbd2aa5fae9cbceca546169a8399000f72d5d940fa5c4ba554612903bcafbb8033647179e5d21ccf1d621b433d089695f7f47ce3d9fcf4cd0abf - languageName: node - linkType: hard - "eslint-plugin-react-hooks@npm:^7.0.1": version: 7.0.1 resolution: "eslint-plugin-react-hooks@npm:7.0.1" @@ -6389,7 +6156,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.20.0": +"eslint-plugin-react@npm:^7.37.5": version: 7.37.5 resolution: "eslint-plugin-react@npm:7.37.5" dependencies: @@ -6437,29 +6204,6 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" - dependencies: - eslint-visitor-keys: "npm:^1.1.0" - checksum: 10c0/69521c5d6569384b24093125d037ba238d3d6e54367f7143af9928f5286369e912c26cad5016d730c0ffb9797ac9e83831059d7f1d863f7dc84330eb02414611 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^1.1.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 10c0/10c91fdbbe36810dd4308e57f9a8bc7177188b2a70247e54e3af1fa05ebc66414ae6fd4ce3c6c6821591f43a556e9037bc6b071122e099b5f8b7d2f76df553e3 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 - languageName: node - linkType: hard - "eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" @@ -6474,21 +6218,6 @@ __metadata: languageName: node linkType: hard -"eslint-webpack-plugin@npm:^6.0.0": - version: 6.0.0 - resolution: "eslint-webpack-plugin@npm:6.0.0" - dependencies: - "@types/eslint": "npm:^9.6.1" - micromatch: "npm:^4.0.8" - normalize-path: "npm:^3.0.0" - schema-utils: "npm:^4.3.3" - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - webpack: ^5.0.0 - checksum: 10c0/9805305057c5a715287d23a03e9359f41b7b52407c4e73d81d4168843a52d548cf621d3a6341456918be1914a06d594b8021b67c18038c69473afab62b1a9302 - languageName: node - linkType: hard - "eslint@npm:^9.39.1": version: 9.39.4 resolution: "eslint@npm:9.39.4" @@ -7137,15 +6866,6 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.8.1": - version: 4.13.7 - resolution: "get-tsconfig@npm:4.13.7" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/1118eb7e9b27bce0b9b6f042e98f0d067e26dfa1ca32bc4b56e892b615b57a5a4af9e6f801c7b0611a4afef2e31c4941be4c6026e0e6a480aaf1ddaf261113d5 - languageName: node - linkType: hard - "gl-mat4@npm:^1.2.0": version: 1.2.0 resolution: "gl-mat4@npm:1.2.0" @@ -7277,10 +6997,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.11.0": - version: 15.15.0 - resolution: "globals@npm:15.15.0" - checksum: 10c0/f9ae80996392ca71316495a39bec88ac43ae3525a438b5626cd9d5ce9d5500d0a98a266409605f8cd7241c7acf57c354a48111ea02a767ba4f374b806d6861fe +"globals@npm:^16.4.0": + version: 16.5.0 + resolution: "globals@npm:16.5.0" + checksum: 10c0/615241dae7851c8012f5aa0223005b1ed6607713d6813de0741768bd4ddc39353117648f1a7086b4b0fa45eae733f1c0a0fe369aa4e543bb63f8de8990178ea9 languageName: node linkType: hard @@ -7294,13 +7014,6 @@ __metadata: languageName: node linkType: hard -"globrex@npm:^0.1.2": - version: 0.1.2 - resolution: "globrex@npm:0.1.2" - checksum: 10c0/a54c029520cf58bda1d8884f72bd49b4cd74e977883268d931fd83bcbd1a9eb96d57c7dbd4ad80148fb9247467ebfb9b215630b2ed7563b2a8de02e1ff7f89d1 - languageName: node - linkType: hard - "glsl-inject-defines@npm:^1.0.1": version: 1.0.3 resolution: "glsl-inject-defines@npm:1.0.3" @@ -7802,7 +7515,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.3.2": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -8503,17 +8216,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f - languageName: node - linkType: hard - "json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -8874,7 +8576,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.2": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -8962,7 +8664,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: @@ -8971,7 +8673,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": +"minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -9394,7 +9096,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": version: 4.1.7 resolution: "object.assign@npm:4.1.7" dependencies: @@ -9408,7 +9110,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.5, object.entries@npm:^1.1.9": +"object.entries@npm:^1.1.9": version: 1.1.9 resolution: "object.entries@npm:1.1.9" dependencies: @@ -9432,17 +9134,6 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.3": - version: 1.0.3 - resolution: "object.groupby@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - checksum: 10c0/60d0455c85c736fbfeda0217d1a77525956f76f7b2495edeca9e9bbf8168a45783199e77b894d30638837c654d0cc410e0e02cbfcf445bc8de71c3da1ede6a9c - languageName: node - linkType: hard - "object.values@npm:^1.1.6, object.values@npm:^1.2.1": version: 1.2.1 resolution: "object.values@npm:1.2.1" @@ -9781,7 +9472,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": +"picomatch@npm:^4.0.3, picomatch@npm:^4.0.4": version: 4.0.4 resolution: "picomatch@npm:4.0.4" checksum: 10c0/e2c6023372cc7b5764719a5ffb9da0f8e781212fa7ca4bd0562db929df8e117460f00dff3cb7509dacfc06b86de924b247f504d0ce1806a37fac4633081466b0 @@ -10299,6 +9990,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^3.6.2": + version: 3.8.3 + resolution: "prettier@npm:3.8.3" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/754816fd7593eb80f6376d7476d463e832c38a12f32775a82683adb6e35b772b1f484d65f19401507b983a8c8a7cd5a4a9f12006bd56491e8f35503473f77473 + languageName: node + linkType: hard + "prismjs@npm:^1.30.0": version: 1.30.0 resolution: "prismjs@npm:1.30.0" @@ -10897,13 +10597,6 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.0.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: 10c0/d1da82385c8754a1681416b90b9cca0e21b4a2babef159099b88f640637d789c69011d0bc94705dacab85b81133e929d027d85210e8b8b03f8035164dbc14710 - languageName: node - linkType: hard - "regexpu-core@npm:^6.3.1": version: 6.4.0 resolution: "regexpu-core@npm:6.4.0" @@ -11081,13 +10774,6 @@ __metadata: languageName: node linkType: hard -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab - languageName: node - linkType: hard - "resolve-protobuf-schema@npm:^2.1.0": version: 2.1.0 resolution: "resolve-protobuf-schema@npm:2.1.0" @@ -11104,7 +10790,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.0.0, resolve@npm:^1.1.10, resolve@npm:^1.1.5, resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.20.0, resolve@npm:^1.22.11": +"resolve@npm:^1.0.0, resolve@npm:^1.1.10, resolve@npm:^1.1.5, resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.11": version: 1.22.12 resolution: "resolve@npm:1.22.12" dependencies: @@ -11118,7 +10804,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.5, resolve@npm:^2.0.0-next.6": +"resolve@npm:^2.0.0-next.5": version: 2.0.0-next.6 resolution: "resolve@npm:2.0.0-next.6" dependencies: @@ -11141,7 +10827,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin, resolve@patch:resolve@npm%3A^1.1.10#optional!builtin, resolve@patch:resolve@npm%3A^1.1.5#optional!builtin, resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.11#optional!builtin": +"resolve@patch:resolve@npm%3A^1.0.0#optional!builtin, resolve@patch:resolve@npm%3A^1.1.10#optional!builtin, resolve@patch:resolve@npm%3A^1.1.5#optional!builtin, resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.11#optional!builtin": version: 1.22.12 resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d" dependencies: @@ -11155,7 +10841,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin, resolve@patch:resolve@npm%3A^2.0.0-next.6#optional!builtin": +"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": version: 2.0.0-next.6 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.6#optional!builtin::version=2.0.0-next.6&hash=c3c19d" dependencies: @@ -11336,7 +11022,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.1.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -11345,7 +11031,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.4, semver@npm:^7.6.3": +"semver@npm:^7.3.5, semver@npm:^7.6.3": version: 7.7.4 resolution: "semver@npm:7.7.4" bin: @@ -12023,13 +11709,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 - languageName: node - linkType: hard - "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -12477,17 +12156,6 @@ __metadata: languageName: node linkType: hard -"ts-declaration-location@npm:^1.0.6": - version: 1.0.7 - resolution: "ts-declaration-location@npm:1.0.7" - dependencies: - picomatch: "npm:^4.0.2" - peerDependencies: - typescript: ">=4.0.0" - checksum: 10c0/b579b7630907052cc174b051dffdb169424824d887d8fb5abdc61e7ab0eede348c2b71c998727b9e4b314c0436f5003a15bb7eedb1c851afe96e12499f159630 - languageName: node - linkType: hard - "ts-mixer@npm:^6.0.3, ts-mixer@npm:^6.0.4": version: 6.0.4 resolution: "ts-mixer@npm:6.0.4" @@ -12512,18 +12180,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.15.0": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 - languageName: node - linkType: hard - "tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -13109,11 +12765,11 @@ __metadata: "@atlaskit/pragmatic-drag-and-drop": "npm:^1.7.10" "@atlaskit/pragmatic-drag-and-drop-hitbox": "npm:^1.1.0" "@babel/core": "npm:^7.28.5" - "@babel/eslint-parser": "npm:^7.28.5" "@babel/plugin-transform-runtime": "npm:^7.28.5" "@babel/preset-env": "npm:^7.28.5" "@babel/preset-react": "npm:^7.28.5" "@babel/runtime": "npm:^7.28.4" + "@eslint/js": "npm:^9.39.1" "@popperjs/core": "npm:^2.11.6" "@rails/actiontext": "npm:^8.1.100" "@rails/ujs": "npm:^7.1.3-4" @@ -13138,24 +12794,19 @@ __metadata: debug: "npm:^4.4.3" diff2html: "npm:^3.4.22" eslint: "npm:^9.39.1" - eslint-config-airbnb: "npm:^19.0.2" - eslint-config-react: "npm:^1.1.7" - eslint-config-standard: "npm:^17.0.0" - eslint-plugin-import: "npm:^2.20.2" - eslint-plugin-jsx-a11y: "npm:^6.2.3" - eslint-plugin-n: "npm:^17.23.1" - eslint-plugin-node: "npm:^11.1.0" - eslint-plugin-promise: "npm:^7.1.0" - eslint-plugin-react: "npm:^7.20.0" + eslint-config-prettier: "npm:^10.1.8" + eslint-plugin-jsx-a11y: "npm:^6.10.2" + eslint-plugin-react: "npm:^7.37.5" eslint-plugin-react-hooks: "npm:^7.0.1" - eslint-webpack-plugin: "npm:^6.0.0" expose-loader: "npm:^5.0.0" + globals: "npm:^16.4.0" ify-loader: "npm:^1.1.0" immutability-helper: "npm:^3.0.2" jquery: "npm:^3.6.1" mini-css-extract-plugin: "npm:^2.5.3" plotly.js: "npm:^3.3.0" pnp-webpack-plugin: "npm:1" + prettier: "npm:^3.6.2" prop-types: "npm:^15.7.2" qs: "npm:^6.9.4" react: "npm:^19.2.0" From e16d6f3996e5ac6f104df61c84614ee0df0b337e Mon Sep 17 00:00:00 2001 From: relf Date: Mon, 4 May 2026 16:40:22 +0200 Subject: [PATCH 2/3] Lint and format --- app/javascript/api_doc_viewer/index.jsx | 15 +- .../application_views/analyses_index.js | 25 +- .../application_views/operations_index.js | 51 ++- .../components/AnalysisBreadCrumbs.jsx | 20 +- .../mda_viewer/components/AnalysisEditor.jsx | 80 ++-- .../components/AnalysisNoteEditor.jsx | 7 +- .../components/AnalysisSelector.jsx | 6 +- .../mda_viewer/components/ComparisonPanel.jsx | 4 +- .../components/ConnectionsEditor.jsx | 86 ++-- .../components/DisciplinesEditor.jsx | 242 +++++++----- .../components/DistributionModals.jsx | 266 +++++++------ .../mda_viewer/components/ExportPanel.jsx | 26 +- .../mda_viewer/components/HistoryPanel.jsx | 24 +- .../mda_viewer/components/ImportSection.jsx | 15 +- .../components/OpenmdaoImplEditor.jsx | 76 +++- .../mda_viewer/components/ToolBar.jsx | 94 +++-- .../components/VariableSearchPanel.jsx | 39 +- .../components/VariableSelector.jsx | 4 +- .../mda_viewer/components/VariablesEditor.jsx | 159 ++++---- .../components/VariablesGlobalFilter.jsx | 15 +- .../components/VariablesPagination.jsx | 38 +- .../mda_viewer/components/XdsmViewer.jsx | 12 +- .../mda_viewer/components/custom-plotly.js | 4 +- app/javascript/mda_viewer/index.jsx | 366 +++++++++--------- .../packs/api_doc_viewer_application.jsx | 4 +- .../packs/mda_viewer_application.jsx | 22 +- app/javascript/packs/plotter_application.jsx | 4 +- .../packs/sensitivity_plotter_application.jsx | 4 +- .../components/DistributionHistogram.jsx | 24 +- .../plotter/components/IterationLinePlot.jsx | 2 +- .../plotter/components/IterationRadarPlot.jsx | 2 +- .../components/ParallelCoordinates.jsx | 7 +- .../plotter/components/ScatterPlotMatrix.jsx | 2 +- .../plotter/components/ScatterSurfacePlot.jsx | 11 +- .../plotter/components/VariableSelector.jsx | 12 +- .../plotter/components/colorscale.js | 5 +- app/javascript/plotter/index.jsx | 67 +--- .../components/MorrisScatterPlot.jsx | 7 +- .../components/SobolHeatMap.jsx | 22 +- .../components/SobolScatterPlot.jsx | 14 +- app/javascript/sensitivity_plotter/index.jsx | 52 +-- app/javascript/utils/AnalysisDatabase.js | 46 ++- app/javascript/utils/RjsfSelectWidgetBs5.jsx | 43 +- app/javascript/utils/WhatsOptApi.js | 156 +++++--- app/javascript/utils/compare.js | 22 +- .../utils/components/DataConfirmModal.jsx | 41 +- app/javascript/utils/components/Error.jsx | 8 +- .../utils/components/LoadingIndicator.jsx | 13 +- .../utils/components/custom-plotly.js | 4 +- babel.config.js | 5 +- config/webpack/webpack.config.js | 13 +- eslint.config.cjs | 104 ++--- postcss.config.js | 10 +- 53 files changed, 1288 insertions(+), 1112 deletions(-) diff --git a/app/javascript/api_doc_viewer/index.jsx b/app/javascript/api_doc_viewer/index.jsx index 9141c7ec..d096f375 100644 --- a/app/javascript/api_doc_viewer/index.jsx +++ b/app/javascript/api_doc_viewer/index.jsx @@ -5,13 +5,7 @@ import 'swagger-ui-react/swagger-ui.css'; function MySwaggerUI(props) { const { url, preAuthorize } = props; - return ( - - ); + return ; } MySwaggerUI.propTypes = { @@ -26,12 +20,7 @@ function SwaggerApiDoc({ api }) { } } - return ( - preAuthorize(sui)} - /> - ); + return preAuthorize(sui)} />; } SwaggerApiDoc.propTypes = { diff --git a/app/javascript/application_views/analyses_index.js b/app/javascript/application_views/analyses_index.js index 86a27e30..c1194585 100644 --- a/app/javascript/application_views/analyses_index.js +++ b/app/javascript/application_views/analyses_index.js @@ -37,7 +37,9 @@ class AnalysesIndex { }, success() { $.getScript(this.href, () => { - if (timeout) { clearTimeout(timeout); } + if (timeout) { + clearTimeout(timeout); + } $('.spinner').hide(); // UX test: code below reset the search string @@ -68,16 +70,13 @@ class AnalysesIndex { $('input[data-analyses-query]').on('click', setAnalysesListSettings); $('input[data-analyses-order]').on('click', setAnalysesListSettings); - $('#analyses-filter').on( - 'keypress', - (event) => { - if (event.key === 'Enter') { - setAnalysesListSettings(); - // Cancel the default action, if needed - event.preventDefault(); - } - }, - ); + $('#analyses-filter').on('keypress', (event) => { + if (event.key === 'Enter') { + setAnalysesListSettings(); + // Cancel the default action, if needed + event.preventDefault(); + } + }); $('#btn_user_settings_analyses_filter').on('click', setAnalysesListSettings); let current_design_project_id = '<%= current_user.analyses_scope_design_project_id %>'; @@ -99,7 +98,9 @@ class AnalysesIndex { }, success() { $.getScript(this.href, () => { - if (timeout) { clearTimeout(timeout); } + if (timeout) { + clearTimeout(timeout); + } $('.spinner').hide(); }); }, diff --git a/app/javascript/application_views/operations_index.js b/app/javascript/application_views/operations_index.js index f1f80bf4..c3432be6 100644 --- a/app/javascript/application_views/operations_index.js +++ b/app/javascript/application_views/operations_index.js @@ -20,33 +20,30 @@ class OperationsIndex { $input.on('focus'); }); - $('button[data-save="true"]').on( - 'click', - () => { - const newName = $input.val(); - $.ajax({ - type: 'PATCH', - xhrFields: { withCredentials: true }, - headers: { Authorization: `Token ${opeEdit.apiKey}` }, - url: `${relativeUrlRoot}/api/v1/operations/${opeEdit.id}`, - data: { operation: { name: newName } }, - success() { - $(`a[id=${opeEdit.id}]`).text(newName); - opeEdit.invoker.data('ope-name', newName); - $modal.modal('hide'); - }, - error(xhr) { - console.log(xhr.responseJSON.message); - $('#errorPlaceHolder').html( - ``, - ); - $modal.modal('hide'); - }, - }); - }, - ); + $('button[data-save="true"]').on('click', () => { + const newName = $input.val(); + $.ajax({ + type: 'PATCH', + xhrFields: { withCredentials: true }, + headers: { Authorization: `Token ${opeEdit.apiKey}` }, + url: `${relativeUrlRoot}/api/v1/operations/${opeEdit.id}`, + data: { operation: { name: newName } }, + success() { + $(`a[id=${opeEdit.id}]`).text(newName); + opeEdit.invoker.data('ope-name', newName); + $modal.modal('hide'); + }, + error(xhr) { + console.log(xhr.responseJSON.message); + $('#errorPlaceHolder').html( + `` + ); + $modal.modal('hide'); + }, + }); + }); } } diff --git a/app/javascript/mda_viewer/components/AnalysisBreadCrumbs.jsx b/app/javascript/mda_viewer/components/AnalysisBreadCrumbs.jsx index 005b1f44..0660253b 100644 --- a/app/javascript/mda_viewer/components/AnalysisBreadCrumbs.jsx +++ b/app/javascript/mda_viewer/components/AnalysisBreadCrumbs.jsx @@ -12,14 +12,16 @@ class AnalysisBreadCrumbs extends React.PureComponent { klass += ' active'; name = anc.name; } - return (
  • {name}
  • ); + return ( +
  • + {name} +
  • + ); }); return ( ); } @@ -27,10 +29,12 @@ class AnalysisBreadCrumbs extends React.PureComponent { AnalysisBreadCrumbs.propTypes = { api: PropTypes.object.isRequired, - path: PropTypes.arrayOf(PropTypes.shape({ - name: PropTypes.string, - id: PropTypes.number, - })).isRequired, + path: PropTypes.arrayOf( + PropTypes.shape({ + name: PropTypes.string, + id: PropTypes.number, + }) + ).isRequired, }; export default AnalysisBreadCrumbs; diff --git a/app/javascript/mda_viewer/components/AnalysisEditor.jsx b/app/javascript/mda_viewer/components/AnalysisEditor.jsx index ebe184e9..9ed9da6c 100644 --- a/app/javascript/mda_viewer/components/AnalysisEditor.jsx +++ b/app/javascript/mda_viewer/components/AnalysisEditor.jsx @@ -7,21 +7,26 @@ import AnalysisNoteEditor from './AnalysisNoteEditor'; class UserList extends React.PureComponent { render() { - const { - users, userRole, onUserDelete, editEnabled, - } = this.props; + const { users, userRole, onUserDelete, editEnabled } = this.props; const logins = users.map((user) => user.login); const userItems = logins.map((login, i) => ( - - + )); - return ({userItems}); + return {userItems}; } } @@ -34,9 +39,7 @@ UserList.propTypes = { class TeamSelector extends React.PureComponent { render() { - const { - users, userRole, onUserSearch, onUserSelected, onUserDelete, editEnabled, - } = this.props; + const { users, userRole, onUserSearch, onUserSelected, onUserDelete, editEnabled } = this.props; let title = 'Users'; if (userRole === 'member') { title = 'Members'; @@ -59,10 +62,8 @@ class TeamSelector extends React.PureComponent {
    - { title } - - {users.length} - + {title} + {users.length}
    {userSelector}
    @@ -93,11 +94,23 @@ class AnalysisEditor extends React.PureComponent { render() { let teamMembers = null; const { - analysisPublic, analysisMembers, analysisCoOwners, - analysisPermissionsEditable, onAnalysisUserSearch, onAnalysisUserSelected, - onAnalysisUserDelete, onAnalysisUpdate, newAnalysisName, - onAnalysisNameChange, onAnalysisNoteChange, onAnalysisPublicChange, - mdaId, note, onProjectSearch, onProjectSelected, mdaProject, + analysisPublic, + analysisMembers, + analysisCoOwners, + analysisPermissionsEditable, + onAnalysisUserSearch, + onAnalysisUserSelected, + onAnalysisUserDelete, + onAnalysisUpdate, + newAnalysisName, + onAnalysisNameChange, + onAnalysisNoteChange, + onAnalysisPublicChange, + mdaId, + note, + onProjectSearch, + onProjectSelected, + mdaProject, } = this.props; if (!analysisPublic) { teamMembers = ( @@ -127,15 +140,12 @@ class AnalysisEditor extends React.PureComponent {
    - - {' '} - General Information + General + Information
    -
    - Name -
    +
    Name
    -
    - Design Project -
    +
    Design Project
    -
    - Notes -
    +
    Notes
    - +

    - - {' '} - Collaboration - {' '} + Collaboration{' '} (allow edit access to the users listed below)
    @@ -183,10 +188,7 @@ class AnalysisEditor extends React.PureComponent {
    - - {' '} - Privacy - {' '} + Privacy{' '} (when restricted, allow read only access to the users listed below)
    diff --git a/app/javascript/mda_viewer/components/AnalysisNoteEditor.jsx b/app/javascript/mda_viewer/components/AnalysisNoteEditor.jsx index ffc3d839..763f85e8 100644 --- a/app/javascript/mda_viewer/components/AnalysisNoteEditor.jsx +++ b/app/javascript/mda_viewer/components/AnalysisNoteEditor.jsx @@ -35,7 +35,12 @@ class AnalysisNoteEditor extends React.Component {
    {/*