From 36a0aac2816d27e157adb78d52b71486fd55754c Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 27 Dec 2022 16:40:38 +0530 Subject: [PATCH 01/20] update render.yaml for tooljetdb feature flag (#5067) --- .github/workflows/render-preview-deploy.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/render-preview-deploy.yml b/.github/workflows/render-preview-deploy.yml index 70dd0c02d0..a336da7664 100644 --- a/.github/workflows/render-preview-deploy.yml +++ b/.github/workflows/render-preview-deploy.yml @@ -57,6 +57,10 @@ jobs: "key": "PG_DB", "value": "${{ env.PR_NUMBER }}" }, + { + "key": "ENABLE_TOOLJET_DB", + "value": "true", + } { "key": "TOOLJET_DB", "value": "${{ env.PR_NUMBER }}" From a8cee451fbd371aea77eec7b6674c088ee237a05 Mon Sep 17 00:00:00 2001 From: Ananya Sarkar <43948718+Anny8910@users.noreply.github.com> Date: Wed, 28 Dec 2022 13:24:17 +0530 Subject: [PATCH 02/20] [docs] updated Bulk update to Save Changes (#5072) --- docs/docs/how-to/bulk-update-multiple-rows-in-table.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/how-to/bulk-update-multiple-rows-in-table.md b/docs/docs/how-to/bulk-update-multiple-rows-in-table.md index af9ccf6693..437190160c 100644 --- a/docs/docs/how-to/bulk-update-multiple-rows-in-table.md +++ b/docs/docs/how-to/bulk-update-multiple-rows-in-table.md @@ -98,7 +98,7 @@ Let's create a new PostgreSQL query and name it `update`. In **SQL mode**, enter - Click on the handle of the **Table** widget to open its properties - Go to the **Events**, and add a handler -- Select **Bulk Update** in Events, **Run Query** in Actions, and then select the **runjs1** query in Query. Now whenever a user will edit the table and hit the **Save Changes** button runjs1 will run. +- Select **Save Changes** in Events, **Run Query** in Actions, and then select the **runjs1** query in Query. Now whenever a user will edit the table and hit the **Save Changes** button runjs1 will run.
@@ -112,4 +112,4 @@ Let's create a new PostgreSQL query and name it `update`. In **SQL mode**, enter ![ToolJet - How To - Bulk update multiple rows in table](/img/how-to/bulk-update-multiple/success.png) -
\ No newline at end of file + From 5fd8e5a581e54c13d961b07948f03203e5acde99 Mon Sep 17 00:00:00 2001 From: ToolJet Bot <96556479+tooljet-bot@users.noreply.github.com> Date: Wed, 28 Dec 2022 21:53:30 +0530 Subject: [PATCH 03/20] Update render-suspend-labeler.yml (#5084) --- .github/workflows/render-suspend-labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/render-suspend-labeler.yml b/.github/workflows/render-suspend-labeler.yml index b60dca1748..7860ae3ade 100644 --- a/.github/workflows/render-suspend-labeler.yml +++ b/.github/workflows/render-suspend-labeler.yml @@ -27,7 +27,7 @@ jobs: env: STALE_NUMBERS: ${{ steps.stale-label.outputs.stale-numbers }} with: - github-token: ${{ secrets.GITHUB_TOKEN }} + github-token: ${{ secrets.TJ_BOT_PAT }} script: | if (!process.env.STALE_NUMBERS) return From bc4974da4e10c6ee7aa19afe6097ada6f9f780bc Mon Sep 17 00:00:00 2001 From: Sherfin Shamsudeen Date: Thu, 29 Dec 2022 13:18:20 +0530 Subject: [PATCH 04/20] Main (#5097) * [Hotfix]: Fixes Showing Toast Message on Query Success in Viewer (#5077) * Fixes showing success message on every query run in viewer * Removed unwanted changes * Bump patch version Co-authored-by: Kavin Venkatachalam <50441969+kavinvenkatachalam@users.noreply.github.com> --- .version | 2 +- frontend/src/_helpers/appUtils.js | 4 ++-- server/.version | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.version b/.version index 34aae156b1..6bae540243 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.31.0 +1.31.1 diff --git a/frontend/src/_helpers/appUtils.js b/frontend/src/_helpers/appUtils.js index 0b780af527..fb45d1066f 100644 --- a/frontend/src/_helpers/appUtils.js +++ b/frontend/src/_helpers/appUtils.js @@ -719,7 +719,7 @@ export function previewQuery(_ref, query, editorState, calledFromQuery = false) return new Promise(function (resolve, reject) { let queryExecutionPromise = null; if (query.kind === 'runjs') { - queryExecutionPromise = executeMultilineJS(_ref, query.options.code, editorState, true); + queryExecutionPromise = executeMultilineJS(_ref, query.options.code, editorState, query?.id, true); } else if (query.kind === 'runpy') { queryExecutionPromise = executeRunPycode(_ref, query.options.code, query, editorState, true, 'edit'); } else { @@ -827,7 +827,7 @@ export function runQuery(_ref, queryId, queryName, confirmed = undefined, mode = _self.setState({ currentState: newState }, () => { let queryExecutionPromise = null; if (query.kind === 'runjs') { - queryExecutionPromise = executeMultilineJS(_self, query.options.code, _ref, false, confirmed, mode); + queryExecutionPromise = executeMultilineJS(_self, query.options.code, _ref, query?.id, false, confirmed, mode); } else if (query.kind === 'runpy') { queryExecutionPromise = executeRunPycode(_self, query.options.code, query, _ref, false, mode); } else { diff --git a/server/.version b/server/.version index 34aae156b1..6bae540243 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -1.31.0 +1.31.1 From 7566016bb0b66e479a2970efdca62dfec0d33fdd Mon Sep 17 00:00:00 2001 From: Aashish Upadhyay <81024263+Aashish-Upadhyay-101@users.noreply.github.com> Date: Thu, 29 Dec 2022 15:01:30 +0545 Subject: [PATCH 05/20] [docs] Fix search bar border radius (#5085) * docs: fix search bar border radius * Revert "docs: fix search bar border radius" This reverts commit 46388fc2e3ef17abcca4a54ff0cc88537e383b00. * docs: fix border-radius of search bar --- docs/src/css/custom.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index a547d5ccc7..10105062c5 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -249,6 +249,10 @@ strong { var(--ifm-color-emphasis-100) 100%); } +.DocSearch-Button{ + border-radius: 5px !important; +} + @media screen and (min-width: 768px) { .DocSearch-Button-Container { min-width: 200px; From d93f185c264e45c730c15883a50767f8b518ba16 Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 30 Dec 2022 17:09:03 +0530 Subject: [PATCH 06/20] Fix: render template for prev env (#5120) --- .github/workflows/render-preview-deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/render-preview-deploy.yml b/.github/workflows/render-preview-deploy.yml index a336da7664..3f1e0ddb4b 100644 --- a/.github/workflows/render-preview-deploy.yml +++ b/.github/workflows/render-preview-deploy.yml @@ -59,8 +59,8 @@ jobs: }, { "key": "ENABLE_TOOLJET_DB", - "value": "true", - } + "value": "true" + }, { "key": "TOOLJET_DB", "value": "${{ env.PR_NUMBER }}" From 035c06feb3c6648d06398e0dcdea59821db8947d Mon Sep 17 00:00:00 2001 From: Pranay <34662441+Pranay-Tej@users.noreply.github.com> Date: Mon, 2 Jan 2023 13:14:42 +0530 Subject: [PATCH 07/20] fix: calendar icon file name (#4882) Co-authored-by: manishkushare --- .../assets/images/icons/app-icons/{calender.svg => calendar.svg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename frontend/assets/images/icons/app-icons/{calender.svg => calendar.svg} (100%) diff --git a/frontend/assets/images/icons/app-icons/calender.svg b/frontend/assets/images/icons/app-icons/calendar.svg similarity index 100% rename from frontend/assets/images/icons/app-icons/calender.svg rename to frontend/assets/images/icons/app-icons/calendar.svg From 0fb1e0087c2488cb702949bff34f41d494b3ccf5 Mon Sep 17 00:00:00 2001 From: Shubham Gupta <22.shubhamgupta@gmail.com> Date: Mon, 2 Jan 2023 13:35:17 +0530 Subject: [PATCH 08/20] Typo in Kubernetes Setup (#5129) --- docs/docs/setup/kubernetes-gke.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/setup/kubernetes-gke.md b/docs/docs/setup/kubernetes-gke.md index c0eff87f83..b8f919b8b9 100644 --- a/docs/docs/setup/kubernetes-gke.md +++ b/docs/docs/setup/kubernetes-gke.md @@ -69,6 +69,6 @@ If you want to seed the database with a sample user, please SSH into a pod and r This seeds the database with a default user with the following credentials: -**emai**: `dev@tooljet.io` +**email**: `dev@tooljet.io` **password**: `password` From e05bbcd2354d7cb22f87476db2f64a5882168d69 Mon Sep 17 00:00:00 2001 From: Teja Kummarikuntla <34749692+tejakummarikuntla@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:17:35 +0530 Subject: [PATCH 09/20] [docs] Remove inconsistent spacing (#5133) Removed inconsistent spacing around brackets in the Introduction paragraph. --- docs/docs/intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/intro.md b/docs/docs/intro.md index a50ff181ae..c9926e0839 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -1,7 +1,7 @@ --- id: introduction title: Introduction -description: ToolJet is an **open-source low-code framework** to build and deploy custom internal tools. ToolJet can connect to your data sources such as databases ( PostgreSQL, MongoDB, MS SQL Server, Snowflake, , BigQuery, etc ), API/GraphQL endpoints, SaaS tools ( Airtable, Stripe, Google Sheets, etc ) and cloud object storage services ( AWS S3, Google Cloud Storage and Minio ). Once the data sources are connected, ToolJet can run queries on these data sources to fetch and update data. The data fetched from data sources can be visualised and modified using the UI widgets such as tables, charts, forms, etc. +description: ToolJet is an **open-source low-code framework** to build and deploy custom internal tools. ToolJet can connect to your data sources such as databases (PostgreSQL, MongoDB, MS SQL Server, Snowflake, , BigQuery, etc), API/GraphQL endpoints, SaaS tools (Airtable, Stripe, Google Sheets, etc) and cloud object storage services (AWS S3, Google Cloud Storage and Minio). Once the data sources are connected, ToolJet can run queries on these data sources to fetch and update data. The data fetched from data sources can be visualised and modified using the UI widgets such as tables, charts, forms, etc. slug: / --- From 7aefeaa2057e3a76f534b15fc1b8ddfb1b251630 Mon Sep 17 00:00:00 2001 From: Nandini <41302917+Nandinisaha13@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:18:11 +0530 Subject: [PATCH 10/20] Fixed accessing localhost info (#5131) --- docs/docs/contributing-guide/setup/ubuntu.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docs/contributing-guide/setup/ubuntu.md b/docs/docs/contributing-guide/setup/ubuntu.md index 72dac0405d..17ceea4ee1 100644 --- a/docs/docs/contributing-guide/setup/ubuntu.md +++ b/docs/docs/contributing-guide/setup/ubuntu.md @@ -74,9 +74,10 @@ Follow these steps to setup and run ToolJet on Ubuntu. Open terminal and run the ```bash cd ./frontend && npm start ``` - - + + :::info The client will start running on the port 8082, you can access the client by visiting: [https://localhost:8082](https://localhost:8082) + ::: 9. Create login credentials From 16e090585cc61424d9e702f8f9fd5511344e2485 Mon Sep 17 00:00:00 2001 From: gupta3akash <121791103+gupta3akash@users.noreply.github.com> Date: Mon, 2 Jan 2023 14:43:07 +0530 Subject: [PATCH 11/20] [docs] Fixed typo (#5135) --- docs/docs/contributing-guide/tutorials/creating-a-plugin.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/contributing-guide/tutorials/creating-a-plugin.md b/docs/docs/contributing-guide/tutorials/creating-a-plugin.md index 3192928987..ac8fd54687 100644 --- a/docs/docs/contributing-guide/tutorials/creating-a-plugin.md +++ b/docs/docs/contributing-guide/tutorials/creating-a-plugin.md @@ -75,7 +75,7 @@ All the plugins live under the `/plugins` directory. The structure of a plugin l manifest.json ``` -5. Add data source config paramets to manifest.json +5. Add data source config parameters to manifest.json Our BigQuery plugin needs private key of a GCP service account to connect to BigQuery. Let's add `private_key` as a property for the data source. From 85055172946870ce9bf758975b97de0c5563b282 Mon Sep 17 00:00:00 2001 From: minalmehtaa <121793220+minalmehtaa@users.noreply.github.com> Date: Mon, 2 Jan 2023 18:08:49 +0530 Subject: [PATCH 12/20] Minor Fixes (#5143) --- docs/docs/tutorial/workspace-environment-variables.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/tutorial/workspace-environment-variables.md b/docs/docs/tutorial/workspace-environment-variables.md index ab3a6239af..361a37f26d 100644 --- a/docs/docs/tutorial/workspace-environment-variables.md +++ b/docs/docs/tutorial/workspace-environment-variables.md @@ -10,7 +10,7 @@ Workspace Variables are the variables with some value(usually tokens/secret keys Suppose there is an `API key` or a value that you want to use in the queries or widgets in the multiple apps of the same Workspace then the Workspace admin or the user with permissions can add an environment variable. #### Adding the environment variable -- Go to the ToolJet Dashboard, and click on the dropdown on the navigation bar to show `Workspace` options +- Go to the ToolJet's Dashboard, and click on the dropdown on the navigation bar to show `Workspace` options - Select `Manage Environment Variables` - Click on `Add New Variable` button - Give a `Name` to the variable, set the value, choose `Type`, toggle `Encryption`, and click **Add Variable** button @@ -22,12 +22,12 @@ Suppose there is an `API key` or a value that you want to use in the queries or ### Types of variables -- **Client**: The client variable can be used in widgets and queries. +- **Client**: The client variables can be used in widgets and queries. -- **Server**: The server variables can be used with all the queries except the `RunJS`. The reason why we don't allow the server variables to be used with the widgets is that these variables are only resolved during the runtime so they're highly secured. +- **Server**: The server variables can be used with all the queries except the `RunJS` or 'RunPy'. The reason why we don't allow the server variables to be used with the components is that these variables are only resolved during the runtime so they're highly secured. :::info -Variable Type cannot be changed once it has been created. +Variable's Type cannot be changed once it has been created. ::: From 2fb7352ee8567c621aade387f91ffd3cfef2b4a3 Mon Sep 17 00:00:00 2001 From: overlyhonest <100082640+overlyhonest@users.noreply.github.com> Date: Mon, 2 Jan 2023 18:25:44 +0530 Subject: [PATCH 13/20] Update multiworkspace.md (#5144) --- docs/docs/tutorial/multiworkspace.md | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/docs/tutorial/multiworkspace.md b/docs/docs/tutorial/multiworkspace.md index 3f1b8c2b48..f13b235f0d 100644 --- a/docs/docs/tutorial/multiworkspace.md +++ b/docs/docs/tutorial/multiworkspace.md @@ -5,42 +5,37 @@ title: Multi-Workspace # Multi-Workspace -User can create their own workspaces, user who created workspace will be having admin privileges for the workspace. - - +Users can create their own workspaces, a user who created workspace will be having **Admin** privileges for the workspace. multi workspace - ## Hierarchy
- - + tooljet workspace -
## Permissions - The administrator can manage [users and groups](/docs/tutorial/manage-users-groups) of each workspace - Applications and settings can not be shared between workspaces -- A user authorised to login to Tooljet will not have access to all workspaces, Usesr should be invited or signed up to a workspace to log-in to it. +- A user authorised to login to ToolJet will not have access to all workspaces, User should be invited or signed up to a workspace to access it. ## Enabling Multi-Workspace -Set environment variable **DISABLE_MULTI_WORKSPACE** value to **false** to enable the feature, and **true** to disable it. +Set environment variable **DISABLE_MULTI_WORKSPACE** value to **false** to enable the feature, and **true** to disable it. ### When enabled -- When Multi-Workspace feature is enabled, user should login with username and password to log in to Tooljet. +- When Multi-Workspace feature is enabled, user should login with username and password to log in to ToolJet. - Administrator can configure authentication methods for their workspaces. - If password login is enabled, switching to the workspace will happen without any other authorization since the user is already authorized with password login. -- User logged in to Toojet and trying to switch to a workspace where SSO is enabled and password login is disabled, will be redirected to workspace login page and enabled SSO options will be shown +- User logged in to TooJet and trying to switch to a workspace where SSO is enabled and password login is disabled, will be redirected to workspace login page and enabled SSO options will be shown - User can directly login to a workspace using workspace login URL, Administrator can view the URL **Manage SSO -> General Settings -> Login URL**. ### When disabled - If Multi-Workspace is disabled, Create workspace feature won’t be available. -- No separate login page for workspace and SSO configured for the workspace will be reflected to the main login page/login. \ No newline at end of file +- No separate login page for workspace and SSO configured for the workspace will be reflected to the main login page/login. From 44db9e7952e86c609ec78145e914d3c80a1b2001 Mon Sep 17 00:00:00 2001 From: Han Ye Htun <108056141+sloth30799@users.noreply.github.com> Date: Tue, 3 Jan 2023 10:04:26 +0630 Subject: [PATCH 14/20] fix secondary text color update with secondary sign display (#5124) * fix secondary text color update with secondary sign display * Fixes lint errors Co-authored-by: Kavin Venkatachalam --- frontend/src/Editor/Inspector/Inspector.jsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/src/Editor/Inspector/Inspector.jsx b/frontend/src/Editor/Inspector/Inspector.jsx index 6cc1d0c33f..98e5331459 100644 --- a/frontend/src/Editor/Inspector/Inspector.jsx +++ b/frontend/src/Editor/Inspector/Inspector.jsx @@ -128,6 +128,13 @@ export const Inspector = ({ if (param.type === 'select' && defaultValue) { allParams[defaultValue.paramName]['value'] = defaultValue.value; } + if (param.name === 'secondarySignDisplay') { + if (value === 'negative') { + newDefinition['styles']['secondaryTextColour']['value'] = '#EE2C4D'; + } else if (value === 'positive') { + newDefinition['styles']['secondaryTextColour']['value'] = '#36AF8B'; + } + } } else { allParams[param.name] = value; } From b7ac2cf99ff7a1677e86fb95ce0eb89396cac290 Mon Sep 17 00:00:00 2001 From: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com> Date: Tue, 3 Jan 2023 09:39:29 +0530 Subject: [PATCH 15/20] [docs] link env vars with documentation page (#5148) * Update docs: link env vars with documentation page * Update tracking.md * Update tracking.md --- docs/docs/tracking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/tracking.md b/docs/docs/tracking.md index 6033e14f19..7ecc966600 100644 --- a/docs/docs/tracking.md +++ b/docs/docs/tracking.md @@ -20,4 +20,4 @@ Self-hosted version of ToolJet pings our server to fetch the latest product upda ToolJet tracks anonymous usage data such as page loads and clicks. ToolJet tracks only the events and doesn't capture data from data sources. -Tracking can be disabled by setting the value environment variable `ENABLE_TRACKING` to `0`. +Tracking can be disabled by setting the value [environment variable](/docs/setup/env-vars/) ENABLE_TRACKING to 0. From f7a288e4a515bf12ed9c89835117c7e45c3e1508 Mon Sep 17 00:00:00 2001 From: Himanshu Kumar Suman <37357822+himanshu-suman@users.noreply.github.com> Date: Tue, 3 Jan 2023 10:45:57 +0530 Subject: [PATCH 16/20] fix-the-height-of-button-in-navbar-#3136 (#4980) * fix-the-height-of-button-in-navbar-#3136 * Reverted package-lock.json changes * Fixed organisation height Co-authored-by: Kavin Venkatachalam --- frontend/src/_components/Organization.jsx | 1 + frontend/src/_styles/theme.scss | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/_components/Organization.jsx b/frontend/src/_components/Organization.jsx index 4a589f8bdc..22c53df4d8 100644 --- a/frontend/src/_components/Organization.jsx +++ b/frontend/src/_components/Organization.jsx @@ -328,6 +328,7 @@ export const Organization = function Organization({ darkMode }) { href="#" className={`btn ${!isSingleOrganization || admin ? 'dropdown-toggle' : ''} ${darkMode && 'text-muted'}`} onMouseOver={() => setIsListOrganizations(false)} + style={{ height: '38px' }} >
{organization}
diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 22a2a5f9e6..255f0f83c4 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -5173,7 +5173,7 @@ div#driver-page-overlay { } .organization-list { - margin-top: 5px; + margin-top: 4px; .btn { border: 0px; From 75b9c8c408d786f41124e7389450e5b91ea3e3d1 Mon Sep 17 00:00:00 2001 From: AdithyaPadmashali <57041819+AdithyaPadmashali@users.noreply.github.com> Date: Tue, 3 Jan 2023 13:15:47 +0530 Subject: [PATCH 17/20] Changed bottom padding to 1.5rem in modal-main (#5156) --- frontend/src/_styles/theme.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 255f0f83c4..a51da4a5eb 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -4500,7 +4500,7 @@ input[type="text"] { } .modal-main { - padding-bottom: 5rem; + padding-bottom: 1.5rem; } .modal-footer-btn { @@ -6854,4 +6854,4 @@ tbody { } } -} \ No newline at end of file +} From 5d6657eea03864607aae1ba9e08d6fa1a3622840 Mon Sep 17 00:00:00 2001 From: Shashwat Srivastava Date: Tue, 3 Jan 2023 15:55:04 +0530 Subject: [PATCH 18/20] Add app link --- docs/docs/tutorial/adding-a-datasource.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/tutorial/adding-a-datasource.md b/docs/docs/tutorial/adding-a-datasource.md index a8e2d9fb8e..c9b263566b 100644 --- a/docs/docs/tutorial/adding-a-datasource.md +++ b/docs/docs/tutorial/adding-a-datasource.md @@ -26,11 +26,11 @@ You will be prompted to select the data source that you wish to add. Let's selec The name of the data source must be unique (within the app) and can be changed by clicking on the data source name at the top of the prompt. Click on `Test Connection` button to verify the connection, this might take a couple of minutes. Once verified, save the data source. :::tip -If you are using ToolJet cloud and if your data source is not publicly accessible, please white-list our IP address ( shown while creating a new data source ). +If you are using ToolJet cloud (https://app.tooljet.com) and if your data source is not publicly accessible, please white-list our IP address ( shown while creating a new data source ). :::
postgre add datasource -
\ No newline at end of file + From 6868f94741d9268400d46f7d1040575e3c9a2c14 Mon Sep 17 00:00:00 2001 From: Sunil Kumar Date: Tue, 3 Jan 2023 22:04:38 +0530 Subject: [PATCH 19/20] [docs] Renaming widgets to components (#5165) --- docs/docs/tutorial/creating-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/tutorial/creating-app.md b/docs/docs/tutorial/creating-app.md index 08d97e2496..24a9c14706 100644 --- a/docs/docs/tutorial/creating-app.md +++ b/docs/docs/tutorial/creating-app.md @@ -26,6 +26,6 @@ You will be redirected to the visual app editor once the app has been created. C The main components of an app: -- **[Widgets](https://docs.tooljet.com/docs/tutorial/adding-widget)** - UI components such as tables, buttons, dropdowns. +- **[Components](https://docs.tooljet.com/docs/tutorial/adding-widget)** - UI components such as tables, buttons, dropdowns. - **[Data sources](https://docs.tooljet.com/docs/tutorial/adding-a-datasource)** - ToolJet can connect to databases, APIs and external services to fetch and modify data. - **[Queries](https://docs.tooljet.com/docs/tutorial/building-queries)** - Queries are used to access the connected data sources. \ No newline at end of file From 60c311296dafce84c478e5babdabdb63b110511c Mon Sep 17 00:00:00 2001 From: Manish Kushare Date: Wed, 4 Jan 2023 14:59:23 +0530 Subject: [PATCH 20/20] [ Bug fixed ] : [Multi-Select widget ] app freezes when we use control component action to control the same multi-select (#5011) * bug fixed: app freezes * bug fixed : app frezzes when invalid value is provided --- .../src/Editor/Components/Multiselect.jsx | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/frontend/src/Editor/Components/Multiselect.jsx b/frontend/src/Editor/Components/Multiselect.jsx index 72bbe2292f..f1ef850772 100644 --- a/frontend/src/Editor/Components/Multiselect.jsx +++ b/frontend/src/Editor/Components/Multiselect.jsx @@ -75,43 +75,53 @@ export const Multiselect = function Multiselect({ registerAction( 'selectOption', async function (value) { - const newSelected = [ - ...selected, - ...selectOptions.filter( - (option) => option.value === value && !selected.map((selectedOption) => selectedOption.value).includes(value) - ), - ]; - setSelected(newSelected); - setExposedVariable( - 'values', - newSelected.map((item) => item.value) - ).then(() => fireEvent('onSelect')); + if ( + selectOptions.some((option) => option.value === value) && + !selected.some((option) => option.value === value) + ) { + const newSelected = [ + ...selected, + ...selectOptions.filter( + (option) => + option.value === value && !selected.map((selectedOption) => selectedOption.value).includes(value) + ), + ]; + setSelected(newSelected); + setExposedVariable( + 'values', + newSelected.map((item) => item.value) + ).then(() => fireEvent('onSelect')); + } }, [selected, setSelected] ); registerAction( 'deselectOption', async function (value) { - const newSelected = [ - ...selected.filter(function (item) { - return item.value !== value; - }), - ]; - setSelected(newSelected); - setExposedVariable( - 'values', - newSelected.map((item) => item.value) - ).then(() => fireEvent('onSelect')); + if (selectOptions.some((option) => option.value === value) && selected.some((option) => option.value === value)) { + const newSelected = [ + ...selected.filter(function (item) { + return item.value !== value; + }), + ]; + setSelected(newSelected); + setExposedVariable( + 'values', + newSelected.map((item) => item.value) + ).then(() => fireEvent('onSelect')); + } }, [selected, setSelected] ); registerAction( 'clearSelections', async function () { - setSelected([]); - setExposedVariable('values', []).then(() => fireEvent('onSelect')); + if (selected.length >= 1) { + setSelected([]); + setExposedVariable('values', []).then(() => fireEvent('onSelect')); + } }, - [setSelected] + [selected, setSelected] ); return (