graphql-engine/console/.eslintrc

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

276 lines
8.3 KiB
Plaintext
Raw Normal View History

{
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"extends": ["airbnb", "prettier"],
2018-06-28 07:57:37 +03:00
"env": {
"browser": true,
"node": true,
"mocha": true,
"jest": true
2018-06-28 07:57:37 +03:00
},
2020-04-06 14:23:04 +03:00
"parser": "babel-eslint",
2018-06-28 07:57:37 +03:00
"rules": {
"no-useless-escape": 0,
"allowForLoopAfterthoughts": 0,
2018-06-28 07:57:37 +03:00
"react/no-multi-comp": 0,
"import/order": 0,
2018-06-28 07:57:37 +03:00
"import/default": 0,
"import/no-duplicates": 0,
"import/named": 0,
"import/first": 0,
"import/namespace": 0,
"import/no-unresolved": 0,
"import/no-named-as-default": 2,
"import/extensions": 0,
"import/no-extraneous-dependencies": 0,
"import/prefer-default-export": 0,
"comma-dangle": 0,
2020-10-05 12:01:10 +03:00
"id-length": [
1,
{
"min": 1,
"properties": "never"
}
],
"consistent-return": "off",
2020-04-06 14:23:04 +03:00
"indent": "off",
2018-06-28 07:57:37 +03:00
"no-console": 0,
"arrow-parens": 0,
"no-alert": 0,
"no-plusplus": 0,
"no-unsafe-negation": 0,
"no-loop-func": 0,
"no-lonely-if": 0,
"no-bitwise": 0,
"global-require": 0,
"no-param-reassign": 0,
"no-underscore-dangle": 0,
"no-useless-return": 0,
"no-restricted-syntax": 0,
"no-prototype-builtins": 0,
"array-callback-return": 0,
"no-useless-concat": 0,
"class-methods-use-this": 0,
"arrow-body-style": 0,
"prefer-template": 0,
"prefer-spread": 0,
"object-shorthand": 0,
"camelcase": 0,
2018-06-28 07:57:37 +03:00
"object-curly-newline": 0,
"spaced-comment": 0,
2020-10-05 12:01:10 +03:00
"prefer-destructuring": [
"error",
{
"object": false,
"array": false
}
],
2018-06-28 07:57:37 +03:00
"prefer-rest-params": 0,
"function-paren-newline": 0,
"no-case-declarations": 0,
"no-restricted-globals": 0,
"no-unneeded-ternary": 0,
"no-mixed-operators": 0,
"no-return-assign": 0,
"operator-assignment": 0,
"strict": 0,
"react/jsx-no-duplicate-props": 0,
"react/jsx-filename-extension": 0,
"react/jsx-curly-brace-presence": 0,
"react/forbid-prop-types": 0,
"react/require-default-props": 0,
"react/no-unused-prop-types": 0,
"react/no-string-refs": 0,
"react/no-unused-state": 0,
"react/no-array-index-key": 0,
"react/jsx-no-bind": 0,
"react/prop-types": 0,
"react/prefer-stateless-function": 0,
"react/no-unescaped-entities": 0,
"react/sort-comp": 0,
2020-04-06 14:23:04 +03:00
"react/jsx-indent": 0,
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
2018-06-28 07:57:37 +03:00
"jsx-a11y/click-events-have-key-events": 0,
"jsx-a11y/no-static-element-interactions": 0,
"jsx-a11y/no-noninteractive-element-interactions": 0,
"jsx-a11y/label-has-for": 0,
"jsx-a11y/anchor-is-valid": 0,
"jsx-a11y/lang": 0,
"jsx-a11y/alt-text": 0,
"jsx-a11y/no-autofocus": 0,
"max-len": 0,
"no-continue": 0,
"no-new": 0,
2020-02-19 12:59:20 +03:00
"eqeqeq": 0,
"no-nested-ternary": 0,
"react/forbid-dom-props": [
"error",
{
"forbid": [
{
"propName": "data-analytics-name",
"message": "Analytics attributes (data-analytics-name) should be added through the Analytics component/utilities"
},
{
"propName": "data-trackid",
"message": "Analytics attributes (data-trackid) should be added through the Analytics component/utilities"
},
{
"propName": "data-heap-redact-text",
"message": "Analytics attributes (data-heap-redact-text) should be added through the Analytics component/utilities"
},
{
"propName": "data-heap-redact-attributes",
"message": "Analytics attributes (data-heap-redact-attributes) should be added through the Analytics component/utilities"
}
]
}
]
2018-06-28 07:57:37 +03:00
},
"plugins": [
"react",
"import",
"@typescript-eslint/eslint-plugin",
"react-hooks",
"testing-library"
],
2018-06-28 07:57:37 +03:00
"settings": {
"import/resolve": {
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"moduleDirectory": ["node_modules", "src"]
2018-06-28 07:57:37 +03:00
}
},
"globals": {
"__DEVELOPMENT__": true,
"__CLIENT__": true,
"__SERVER__": true,
"__DISABLE_SSR__": true,
"__DEVTOOLS__": true,
"socket": true,
"webpackIsomorphicTools": true,
"CONSOLE_ASSET_VERSION": true
},
"overrides": [
{
2020-04-06 14:23:04 +03:00
"extends": [
"plugin:@typescript-eslint/recommended",
"airbnb",
"prettier"
],
"parser": "@typescript-eslint/parser",
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"files": ["*.ts", "*.tsx"],
"rules": {
"no-useless-escape": 0,
"no-restricted-imports": [
"error",
{
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"patterns": ["@/features/*/*", "@/new-components/*/*"]
}
],
"jsx-a11y/label-has-for": [
0,
{
"required": {
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"some": ["nesting", "id"]
}
}
],
"import/order": 0,
2020-04-06 14:23:04 +03:00
"import/extensions": 0,
"import/prefer-default-export": "off",
2020-04-06 14:23:04 +03:00
"react/prop-types": "off",
"react/jsx-filename-extension": 0,
"no-unused-vars": "off",
"camelcase": "off",
"no-param-reassign": "off",
"no-use-before-define": "off",
"consistent-return": "off",
"import/no-extraneous-dependencies": [
"error",
{
"devDependencies": [
"src/storybook/**/*",
"**/__tests__/**/*",
"**/*.test.js",
"**/*.test.jsx",
"**/*.spec.js",
"**/*.spec.jsx",
"**/*.test.ts",
"**/*.test.tsx",
"**/*.spec.ts",
"**/*.spec.tsx",
"**/*.stories.tsx",
"**/*.stories.mdx",
"**/*.mock.tsx",
"**/*.mock.ts"
]
}
],
2020-04-06 14:23:04 +03:00
"@typescript-eslint/no-unused-vars": 2,
"@typescript-eslint/no-use-before-define": "warn",
2020-04-06 14:23:04 +03:00
"@typescript-eslint/indent": 0,
"@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/prefer-interface": 0,
"@typescript-eslint/no-namespace": "off",
"@typescript-eslint/camelcase": 0,
"@typescript-eslint/explicit-member-accessibility": 0,
"@typescript-eslint/no-non-null-assertion": 0,
"@typescript-eslint/no-object-literal-type-assertion": "off",
"@typescript-eslint/no-empty-interface": "off",
"@typescript-eslint/no-parameter-properties": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-shadow": "error",
2020-04-06 14:23:04 +03:00
"@typescript-eslint/no-useless-constructor": "error",
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"@typescript-eslint/no-unused-expressions": ["error"],
2020-04-06 14:23:04 +03:00
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"no-restricted-syntax": "warn",
/**
* Disable things that are checked by TypeScript
*/
"import/no-unresolved": 0,
"getter-return": "off",
"no-dupe-args": "off",
"no-dupe-keys": "off",
"no-unreachable": "off",
"valid-typeof": "off",
"no-const-assign": "off",
"no-new-symbol": "off",
"no-this-before-super": "off",
"no-undef": "off",
"no-dupe-class-members": "off",
"no-redeclare": "off",
"no-restricted-globals": "warn",
"no-useless-constructor": "off",
"no-unused-expressions": "off",
"no-console": "off",
"no-shadow": "off",
"prefer-destructuring": "off",
"no-plusplus": "off",
"jsx-a11y/anchor-is-valid": "off",
"jsx-a11y/click-events-have-key-events": "off",
"jsx-a11y/no-static-element-interactions": "off",
"no-new": "off",
"no-nested-ternary": "off",
"jsx-a11y/interactive-supports-focus": "off",
"no-restricted-properties": "off",
"react/no-danger": "off",
"react/no-array-index-key": "off",
"no-case-declarations": 0,
"react/jsx-indent": "off",
"arrow-body-style": "off",
"react/require-default-props": "warn",
"react/no-unused-prop-types": "warn",
"jsx-a11y/role-supports-aria-props": "warn"
}
},
{
// 3) Now we enable eslint-plugin-testing-library rules or preset only for matching files!
console: GQL Customization while tracking a table ## Description 🔖 This adds the ability to "customize & track" using the [new tracking ui](https://github.com/hasura/graphql-engine-mono/pull/5391). A new button was added to implement this: <img width="870" alt="Screen Shot 2022-09-16 at 12 37 14 PM" src="https://user-images.githubusercontent.com/49927862/190701948-1ad86717-f6be-4f67-8e0c-17b618790795.png"> ## Solution and Design 🎨 This feature mostly makes use of components and hooks already created. I was able to refactor some code to reduce code duplication and type duplication. A few highlights on the refactor: - `useTrackTable`, `useUntrackTable` and `useTrackSelectedTables` were all refactored into a single hook: `useTrackTable`. This hook has one main function but returns 4 wrapper functions: `trackTable`, `untrackTable`, `trackTables`, and `untrackTables`. This should make maintaining easier in the future. - Synced up types between `MetadataTableConfig` and the customization form. Previously, the customization form had duplicated this same type, and there was some slight discrepancies between them. - Modified `TableTrackingCustomizationModal` `onSubmit` return with a 2nd argument that's in the exact shape of `MetadataTableConfig` for convenience. - Did some refactoring of the `DropDownMenu` component that should not interfere with anything. Exposed a few of the inner components for export and used these modular pieces in the current implementation. This ended up not being used in the feature, but left it in as it's a slight improvement. I also added a function called `delayAsyncAction` [here](https://github.com/hasura/graphql-engine-mono/blob/5e88262628bf5827fe317cd68cda3732ebbcdb79/console/src/components/Common/utils/jsUtils.tsx#L416) to create an artificial delay for `async` functions. This allows us to create a more confident UX when requests happen near-instantly. Introducing a tiny delay of around 300ms with good UI feedback (i.e. loading spinner) shows the user something is happening. I wanted to document this as I'm not sure it's something other will agree on. If it's against our UX philosophy, I can remove it, but I found it nice. ## Review Setup 💻 1. Run the code locally and go to `http://localhost:3000/data/v2/manage?database=YOUR_DATABASE_NAME_HERE` 2. You should see the new button as shown above to `Customize & Track` 3. Try it out with various field custom roots 4. Also try tracking and untracking tables both from the individual rows as well as the checkboxes as this logic was also modified in the refactor. ** I am not totally sure how much I need to put here for testing, I may want some help here from the team. ** ## Review checklist. 📋 ### Functionality - [ ] Steps to verify console behaviour ### Tests Going to open another PR for adding testing to the relevant areas. Will update this PR with a link once that's been done. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5922 GitOrigin-RevId: e7c14be5b9bcc255a7b9ecfd43f1f84aa8aabba2
2022-09-27 01:01:26 +03:00
"files": [
"src/**/__tests__/**/*.[jt]s?(x)",
"src/**/?(*.)+(spec|test).[jt]s?(x)"
],
"extends": ["plugin:testing-library/react", "plugin:jest-dom/recommended"]
}
]
}