diff --git a/packages/noco-docs/dist/.nojekyll b/packages/noco-docs/dist/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/noco-docs/dist/0.109.7/FAQs/index.html b/packages/noco-docs/dist/0.109.7/FAQs/index.html new file mode 100644 index 0000000000..ca078fc841 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/FAQs/index.html @@ -0,0 +1,18 @@ + + + + + +FAQs | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

FAQs

How to upgrade NocoDB ?

How to export CSV from the grid view ?

How to share the project with read only access ?

  • Either you can invite by email with 'viewer' access control
  • Share the base with publicly accessible link. Available since 0.82.0

How to check my current NocoDB version ?

  • You can hover the NocoDB icon on the top left corner or check PackageVersion in Project info.

image

How to check my Project info ?

  • You can click on top right icon and click Copy Project Info.

image

You should see the similar result as below.

Node: **v16.14.0**
Arch: **arm64**
Platform: **darwin**
Docker: **false**
Database: **mysql2**
ProjectOnRootDB: **true**
RootDB: **mysql2**
PackageVersion: **0.97.0**

What is available in free version ?

  • Detailed comparison of NocoDB's generous CE compared to others is here.
  • NocoDB has just one version that is free & open source.
  • In it you will notice advanced features are all available for free.
    • ACL
    • Collaboration
    • Advanced Views : Form View, Gallery View & Kanban View
    • Share View
    • Embed View
    • Password protected View
    • Automations
    • API Token Support
  • And we would never move these features from free to an enterprise version of NocoDB.
  • There is no limitations to number of projects, rows or columns either.

What is the difference between Auth Token and API Token ?

Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable NC_JWT_EXPIRES_IN. If you are passing Auth Token, make sure that the header is called xc-auth.

API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called xc-token.

Do we plan to have an Enterprise Edition?

For features that make sense for enterprises like below - yes

  • SSO, SLA, Organisation wide reports and analytics,
  • Advanced Audit or ACL,
  • Bespoke implementations & integrations,
  • A hosted solution. +

And increasing number of our customers are requesting it.

How do we decide if a feature is Enterprise or not ?

  • Depends on the effort and whether the intended users are enterprises.

What are the official socials for NocoDB?

Is NocoDB available on the cloud?

Soon! NocoDB is currently developing cloud infrastructure. +To join the upcoming FREE private beta program, fill out this form here and be the first to try it!

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/developer-resources/accessing-apis/index.html b/packages/noco-docs/dist/0.109.7/developer-resources/accessing-apis/index.html new file mode 100644 index 0000000000..30808457a1 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/developer-resources/accessing-apis/index.html @@ -0,0 +1,17 @@ + + + + + +Accessing APIs | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Accessing APIs

NocoDB APIs can be authorized by either Auth Token or API Token.

Auth Token

Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable NC_JWT_EXPIRES_IN. If you are passing Auth Token, make sure that the header is called xc-auth.

  • Go to NocoDB Project, click the rightmost button and click Copy Auth Token. +
image

API Token

API tokens allows us to integrate seamlessly with 3rd party apps. See API Tokens Management for more.

Swagger UI

You can interact with the API's resources via Swagger UI.

  • Go to NocoDB Project, click the rightmost button and click Swagger APIs Doc.
image
  • Click Authorize, paste the token you copied in above steps and click Authorize to save.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/developer-resources/rest-apis/index.html b/packages/noco-docs/dist/0.109.7/developer-resources/rest-apis/index.html new file mode 100644 index 0000000000..2d469d6d83 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/developer-resources/rest-apis/index.html @@ -0,0 +1,16 @@ + + + + + +REST APIs | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

REST APIs

Once you've created the schemas, you can manipulate the data or invoke actions using the REST APIs. We provide several types of APIs for different usages as below.

API Overview

Here's the overview of all APIs. For the details, please check out NocoDB API Documentation.

You may also interact with the API's resources via Swagger UI.

note

Currently, the default value for {orgs} is noco. Users will be able to change it in the future release.

Auth APIs

CategoryMethodTagFunction NamePath
AuthPostauthsignup/api/v1/auth/user/signup
AuthPostauthsignin/api/v1/auth/user/signin
AuthGetauthme/api/v1/auth/user/me
AuthPostauthpasswordForgot/api/v1/auth/password/forgot
AuthPostauthpasswordChange/api/v1/auth/password/change
AuthPostauthpasswordReset/api/v1/auth/password/reset/{token}
AuthPostauthtokenRefresh/api/v1/auth/token/refresh
AuthPostauthpasswordResetTokenValidate/api/v1/auth/token/validate/{token}
AuthPostauthemailValidate/api/v1/auth/email/validate/{email}

Public APIs

CategoryMethodTagFunction NamePath
PublicGetpublicsharedBaseGet/api/v1/db/public/shared-base/{sharedBaseUuid}/meta
PublicPostpublicdataList/api/v1/db/public/shared-view/{sharedViewUuid}/rows
PublicGetpublicdataNestedList/api/v1/db/public/shared-view/{sharedViewUuid}/rows/{rowId}/{relationType}/{columnName}
PublicPostpublicdataCreate/api/v1/db/public/shared-view/{sharedViewUuid}/rows
PublicGetpubliccsvExport/api/v1/db/public/shared-view/{sharedViewUuid}/rows/export/{type}
PublicGetpublicdataRelationList/api/v1/db/public/shared-view/{sharedViewUuid}/nested/{columnName}
PublicGetpublicsharedViewMetaGet/api/v1/db/public/shared-view/{sharedViewUuid}/meta
PublicGetpublicgroupedDataList/api/v1/db/public/shared-view/{sharedViewUuid}/group/{columnId}

Data APIs

CategoryMethodTagFunction NamePath
DataDeletedbTableRowbulkDelete/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/
DataPostdbTableRowbulkCreate/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/
DataPatchdbTableRowbulkUpdate/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/
DataPatchdbTableRowbulkUpdateAll/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/all
DataDeletedbTableRowbulkDeleteAll/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/all
DataGetdbTableRowlist/api/v1/db/data/{orgs}/{projectName}/{tableName}
DataGetdbTableRowfindOne/api/v1/db/data/{orgs}/{projectName}/{tableName}/find-one
DataGetdbTableRowgroupBy/api/v1/db/data/{orgs}/{projectName}/{tableName}/groupby
DataGetdbTableRowexist/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}/exist
DataPostdbTableRowcreate/api/v1/db/data/{orgs}/{projectName}/{tableName}
DataGetdbTableRowread/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}
DataPatchdbTableRowupdate/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}
DataDeletedbTableRowdelete/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}
DataGetdbTableRowcount/api/v1/db/data/{orgs}/{projectName}/{tableName}/count
DataGetdbTableRowgroupedDataList/api/v1/db/data/{orgs}/{projectName}/{tableName}/group/{columnId}
DataGetdbViewRowlist/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}
DataGetdbViewRowfindOne/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/find-one
DataGetdbViewRowgroupBy/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/groupby
DataGetdbViewRowexist/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}/exist
DataPostdbViewRowcreate/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}
DataGetdbViewRowread/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}
DataPatchdbViewRowupdate/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}
DataDeletedbViewRowdelete/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}
DataGetdbViewRowcount/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/count
DataGetdbViewRowgroupedDataList/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/group/{columnId}

Meta APIs

CategoryMethodTagFunction NamePath
MetaGetapiTokenlist/api/v1/db/meta/projects/{projectId}/api-tokens
MetaPostapiTokencreate/api/v1/db/meta/projects/{projectId}/api-tokens
MetaDeleteapiTokendelete/api/v1/db/meta/projects/{projectId}/api-tokens/{token}
MetaGetauthprojectUserList/api/v1/db/meta/projects/{projectId}/users
MetaPostauthprojectUserAdd/api/v1/db/meta/projects/{projectId}/users
MetaPatchauthprojectUserUpdate/api/v1/db/meta/projects/{projectId}/users/{userId}
MetaDeleteauthprojectUserRemove/api/v1/db/meta/projects/{projectId}/users/{userId}
MetaPostauthprojectUserResendInvite/api/v1/db/meta/projects/{projectId}/users/{userId}/resend-invite
MetaPostdbTablecreate/api/v1/db/meta/projects/{projectId}/tables
MetaGetdbTablelist/api/v1/db/meta/projects/{projectId}/tables
MetaPostdbTableColumncreate/api/v1/db/meta/tables/{tableId}/columns
MetaPatchdbTableColumnupdate/api/v1/db/meta/tables/{tableId}/columns/{columnId}
MetaDeletedbTableColumndelete/api/v1/db/meta/tables/{tableId}/columns/{columnId}
MetaPostdbTableColumnprimaryColumnSet/api/v1/db/meta/tables/{tableId}/columns/{columnId}/primary
MetaGetdbTableFilterget/api/v1/db/meta/filters/{filterId}
MetaPatchdbTableFilterupdate/api/v1/db/meta/filters/{filterId}
MetaDeletedbTableFilterdelete/api/v1/db/meta/filters/{filterId}
MetaGetdbTableFilterread/api/v1/db/meta/views/{viewId}/filters
MetaPostdbTableFiltercreate/api/v1/db/meta/views/{viewId}/filters
MetaGetdbTableFilterget/api/v1/db/meta/filters/{filterId}
MetaPatchdbTableFilterupdate/api/v1/db/meta/filters/{filterId}
MetaDeletedbTableFilterdelete/api/v1/db/meta/filters/{filterId}
MetaGetdbTableFilterchildrenRead/api/v1/db/meta/filters/{filterGroupId}/children
MetaGetdbTableSortlist/api/v1/db/meta/views/{viewId}/sorts
MetaPostdbTableSortcreate/api/v1/db/meta/views/{viewId}/sorts
MetaGetdbTableSortread/api/v1/db/meta/sorts/{sortId}
MetaPatchdbTableSortupdate/api/v1/db/meta/sorts/{sortId}
MetaDeletedbTableSortdelete/api/v1/db/meta/sorts/{sortId}/api/v1/db
MetaPatchdbTableWebhookupdate/api/v1/db/meta/hooks/{hookId}
MetaDeletedbTableWebhookdelete/api/v1/db/meta/hooks/{hookId}
MetaGetdbTableWebhooklist/api/v1/db/meta/tables/{tableId}/hooks
MetaPostdbTableWebhookcreate/api/v1/db/meta/tables/{tableId}/hooks
MetaPostdbTableWebhooktest/api/v1/db/meta/tables/{tableId}/hooks/test
MetaGetdbTableWebhooksamplePayloadGet/api/v1/db/meta/tables/{tableId}/hooks/samplePayload/{operation}
MetaGetdbTableWebhookFilterread/api/v1/db/meta/hooks/{hookId}/filters
MetaPostdbTableWebhookFiltercreate/api/v1/db/meta/hooks/{hookId}/filters
MetaGetdbViewlist/api/v1/db/meta/tables/{tableId}/views
MetaGetdbViewread/api/v1/db/meta/tables/{tableId}
MetaPatchdbViewupdate/api/v1/db/meta/tables/{tableId}
MetaDeletedbViewdelete/api/v1/db/meta/tables/{tableId}
MetaPostdbViewreorder/api/v1/db/meta/tables/{tableId}/reorder
MetaPostdbViewformCreate/api/v1/db/meta/tables/{tableId}/forms
MetaPatchdbViewformUpdate/api/v1/db/meta/forms/{formViewId}
MetaGetdbViewformRead/api/v1/db/meta/forms/{formViewId}
MetaPatchdbViewformColumnUpdate/api/v1/db/meta/form-columns/{formViewColumnId}
MetaPostdbViewgalleryCreate/api/v1/db/meta/tables/{tableId}/galleries
MetaPatchdbViewgalleryUpdate/api/v1/db/meta/galleries/{galleryViewId}
MetaGetdbViewgalleryRead/api/v1/db/meta/galleries/{galleryViewId}
MetaPostdbViewkanbanCreate/api/v1/db/meta/tables/{tableId}/kanbans
MetaPatchdbViewkanbanUpdate/api/v1/db/meta/kanban/{kanbanViewId}
MetaGetdbViewkanbanRead/api/v1/db/meta/kanbans/{kanbanViewId}
MetaPostdbViewmapCreate/api/v1/db/meta/tables/{tableId}/maps
MetaPatchdbViewmapUpdate/api/v1/db/meta/maps/{mapViewId}
MetaGetdbViewmapRead/api/v1/db/meta/maps/{mapViewId}
MetaPostdbViewgridCreate/api/v1/db/meta/tables/{tableId}/grids
MetaGetdbViewgridColumnsList/api/v1/db/meta/grids/{gridId}/grid-columns
MetaPatchdbViewgridColumnUpdate/api/v1/db/meta/grid-columns/{columnId}
MetaPatchdbViewupdate/api/v1/db/meta/views/{viewId}
MetaDeletedbViewdelete/api/v1/db/meta/views/{viewId}
MetaPostdbViewshowAllColumn/api/v1/db/meta/views/{viewId}/show-all
MetaPostdbViewhideAllColumn/api/v1/db/meta/views/{viewId}/hide-all
MetaGetdbViewColumnlist/api/v1/db/meta/views/{viewId}/columns
MetaPostdbViewColumncreate/api/v1/db/meta/views/{viewId}/columns
MetaPatchdbViewColumnupdate/api/v1/db/meta/views/{viewId}/columns/{columnId}
MetaGetdbViewSharelist/api/v1/db/meta/views/{viewId}/share
MetaPostdbViewSharecreate/api/v1/db/meta/views/{viewId}/share
MetaPatchdbViewShareupdate/api/v1/db/meta/views/{viewId}/share
MetaDeletedbViewSharedelete/api/v1/db/meta/views/{viewId}/share
MetaGetpluginlist/api/v1/db/meta/plugins
MetaGetpluginstatus/api/v1/db/meta/plugins/{pluginTitle}/status
MetaPostplugintest/api/v1/db/meta/plugins/test
MetaPATCHpluginupdate/api/v1/db/meta/plugins/{pluginId}
MetaGetpluginread/api/v1/db/meta/plugins/{pluginId}
MetaGetprojectmetaGet/api/v1/db/meta/projects/{projectId}/info
MetaGetprojectmodelVisibilityList/api/v1/db/meta/projects/{projectId}/visibility-rules
MetaPostprojectmodelVisibilitySet/api/v1/db/meta/projects/{projectId}/visibility-rules
MetaGetprojectlist/api/v1/db/meta/projects
MetaPostprojectcreate/api/v1/db/meta/projects
MetaGetprojectread/api/v1/db/meta/projects/{projectId}
MetaDeleteprojectdelete/api/v1/db/meta/projects/{projectId}
MetaGetprojectauditList/api/v1/db/meta/projects/{projectId}/audits
MetaGetprojectmetaDiffGet/api/v1/db/meta/projects/{projectId}/meta-diff
MetaPostprojectmetaDiffSync/api/v1/db/meta/projects/{projectId}/meta-diff
MetaGetprojectsharedBaseGet/api/v1/db/meta/projects/{projectId}/shared
MetaDeleteprojectsharedBaseDisable/api/v1/db/meta/projects/{projectId}/shared
MetaPostprojectsharedBaseCreate/api/v1/db/meta/projects/{projectId}/shared
MetaPatchprojectsharedBaseUpdate/api/v1/db/meta/projects/{projectId}/shared
MetaPoststorageupload/api/v1/db/storage/upload
MetaPoststorageuploadByUrl/api/v1/db/storage/upload-by-url
MetaGetutilscommentList/api/v1/db/meta/audits/comments
MetaPostutilscommentRow/api/v1/db/meta/audits/comments
MetaGetutilscommentCount/api/v1/db/meta/audits/comments/count
MetaPostutilsauditRowUpdate/api/v1/db/meta/audits/update
MetaGetutilscacheGet/api/v1/db/meta/cache
MetaDeleteutilscacheDelete/api/v1/db/meta/cache
MetaPostutilstestConnection/api/v1/db/meta/projects/connection/test
MetaGetutilsappInfo/api/v1/db/meta/nocodb/info
MetaGetutilsappVersion/api/v1/version
MetaGetutilsappHealth/api/v1/health
MetaGetutilsaggregatedMetaInfo/api/v1/aggregated-meta-info
MetaGetorgUserslist/api/v1/users
MetaPostorgUsersadd/api/v1/users
MetaPatchorgUsersupdate/api/v1/users/{userId}
MetaDeleteorgUsersdelete/api/v1/users/{userId}
MetaGetorgTokenslist/api/v1/tokens
MetaPostorgTokenscreate/api/v1/tokens
MetaDeleteorgTokensdelete/api/v1/tokens/{token}
MetaGetorgAppSettingsget/api/v1/app-settings
MetaPostorgAppSettingsset/api/v1/app-settings

Query params

NameAliasUse caseDefault valueExample value
wherewComplicated where conditions(colName,eq,colValue)~or(colName2,gt,colValue2)
Usage: Comparison operators
Usage: Logical operators
limitlNumber of rows to get (SQL limit value)1020
offsetoOffset for pagination (SQL offset value)020
sortsSort by column name, Use - as prefix for descending sortcolumn_name
fieldsfRequired column names in result*column_name1,column_name2
shufflerShuffle the result for pagination01 (Only allow 0 or 1. Other values would see it as 0)

Comparison Operators

OperationMeaningExample
eqequal(colName,eq,colValue)
neqnot equal(colName,neq,colValue)
notnot equal (alias of neq)(colName,not,colValue)
gtgreater than(colName,gt,colValue)
gegreater or equal(colName,ge,colValue)
ltless than(colName,lt,colValue)
leless or equal(colName,le,colValue)
isis(colName,is,true/false/null)
isnotis not(colName,isnot,true/false/null)
inin(colName,in,val1,val2,val3,val4)
btwbetween(colName,btw,val1,val2)
nbtwnot between(colName,nbtw,val1,val2)
likelike(colName,like,%name)
isWithinis Within (Available in Date and DateTime only)(colName,isWithin,sub_op)
allofincludes all of(colName,allof,val1,val2,...)
anyofincludes any of(colName,anyof,val1,val2,...)
nallofdoes not include all of (includes none or some, but not all of)(colName,nallof,val1,val2,...)
nanyofdoes not include any of (includes none of)(colName,nanyof,val1,val2,...)

Comparison Sub-Operators

The following sub-operators are available in Date and DateTime columns.

OperationMeaningExample
todaytoday(colName,eq,today)
tomorrowtomorrow(colName,eq,tomorrow)
yesterdayyesterday(colName,eq,yesterday)
oneWeekAgoone week ago(colName,eq,oneWeekAgo)
oneWeekFromNowone week from now(colName,eq,oneWeekFromNow)
oneMonthAgoone month ago(colName,eq,oneMonthAgo)
oneMonthFromNowone month from now(colName,eq,oneMonthFromNow)
daysAgonumber of days ago(colName,eq,daysAgo,10)
daysFromNownumber of days from now(colName,eq,daysFromNow,10)
exactDateexact date(colName,eq,exactDate,2022-02-02)

For isWithin in Date and DateTime columns, the different set of sub-operators are used.

OperationMeaningExample
pastWeekthe past week(colName,isWithin,pastWeek)
pastMonththe past month(colName,isWithin,pastMonth)
pastYearthe past year(colName,isWithin,pastYear)
nextWeekthe next week(colName,isWithin,nextWeek)
nextMonththe next month(colName,isWithin,nextMonth)
nextYearthe next year(colName,isWithin,nextYear)
nextNumberOfDaysthe next number of days(colName,isWithin,nextNumberOfDays,10)
pastNumberOfDaysthe past number of days(colName,isWithin,pastNumberOfDays,10)

Logical Operators

OperationExample
~or(checkNumber,eq,JM555205)~or((amount, gt, 200)~and(amount, lt, 2000))
~and(checkNumber,eq,JM555205)~and((amount, gt, 200)~and(amount, lt, 2000))
~not~not(checkNumber,eq,JM555205)
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/developer-resources/sdk/index.html b/packages/noco-docs/dist/0.109.7/developer-resources/sdk/index.html new file mode 100644 index 0000000000..212c87eaa5 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/developer-resources/sdk/index.html @@ -0,0 +1,16 @@ + + + + + +NocoDB SDK | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

NocoDB SDK

We provide SDK for users to integrate with their applications. Currently only SDK for Javascript is supported.

note

The NocoDB SDK requires authorization token. If you haven't created one, please check out Accessing APIs for details.

SDK For Javascript

Install nocodb-sdk

npm i nocodb-sdk

Import Api

import { Api } from 'nocodb-sdk'

Configure Api

The Api can be authorizated by either Auth Token or API Token.

Example: Auth Token

const api = new Api({
baseURL: 'https://<HOST>:<PORT>',
headers: {
'xc-auth': '<AUTH_TOKEN>'
}
})

Example: API Token

const api = new Api({
baseURL: 'https://<HOST>:<PORT>',
headers: {
'xc-token': '<API_TOKEN>'
}
})

Call Functions

Once you have configured api, you can call different types of APIs by api.<Tag>.<FunctionName>.

note

For Tag and FunctionName, please check out the API table here.

Example: Calling API - /api/v1/db/meta/projects/{projectId}/tables

await api.dbTable.create(params)
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/developer-resources/upload-via-api/index.html b/packages/noco-docs/dist/0.109.7/developer-resources/upload-via-api/index.html new file mode 100644 index 0000000000..663240ace0 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/developer-resources/upload-via-api/index.html @@ -0,0 +1,17 @@ + + + + + +Upload via API | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Upload via API

Sample code to upload files via API is listed below. +Assumes http://localhost:8080/ as the base URL for the API calls.

Upload local file

let axios = require("axios").default;
let FormData = require('form-data');
let fs = require('fs');

// Configurations
//
const project_id = '<Project Identifier>';
const table_id = '<Table Identifier>';
const xc_token = '<Auth Token>';
const file_path = '<Local File Path>';


// Insert Image
// @param image_path : local file path
// @return : JSON object to be used in insert record API for attachment field
//
async function insertImage (path) {
const formData = new FormData();
formData.append("file", fs.createReadStream(path));
const data = await axios({
url: 'http://localhost:8080/api/v1/db/storage/upload',
data: formData,
headers:{
'Content-Type':`multipart/form-data;`,
'xc-auth': xc_token
},
method: 'post',

// Optional : storage file path
params: {"path": "somePath"}
});
return data;
}

// Insert record with attachment
// Assumes a table with two columns :
// 'Title' of type SingleLineText and
// 'Attachment' of type Attachment
//
async function uploadFileExample() {
let response = await insertImage(file_path);

let row = {
"Title": "2",
"Attachment": response.data
};

await axios({
method: 'POST',
url: `http://localhost:8080/api/v1/db/data/noco/${project_id}/${table_id}`,
data: row,
headers: {
'xc-auth': xc_token
}
});
}

(async () => {
await uploadFileExample();
})();

Upload via URL

let axios = require("axios").default;
let FormData = require('form-data');
let fs = require('fs');

// Configurations
//
const project_id = '<Project Identifier>';
const table_id = '<Table Identifier>';
const xc_token = '<Auth Token>';

// URL array : URLs of files to be uploaded
const URLs = [{ url: '<URL1>' }, { url: '<URL2>' }];

// Insert Image
// @param URLs : [] containing public URL for files to be uploaded
// @return : JSON object to be used in insert record API for attachment field
//
async function insertImageByURL (URL_array) {
const data = await axios({
url: 'http://localhost:8080/api/v1/db/storage/upload-by-url',
data: URL_array,
headers: {
'xc-auth': xc_token
},
method: 'post',

// Optional : storage file path
params: {"path": "somePath"}
});
return data;
}

// Insert record with attachment
// Assumes a table with two columns :
// 'Title' of type SingleLineText and
// 'Attachment' of type Attachment
//
async function uploadByUrlExample() {
let response = await insertImageByURL(URLs);

// Update two columns : Title and Attachment
let row = {
"Title": "3",
"Attachment": response.data
};

await axios({
method: 'POST',
url: `http://localhost:8080/api/v1/db/data/noco/${project_id}/${table_id}`,
data: row,
headers: {
'xc-auth': xc_auth
}
});
}

(async () => {
await uploadByUrlExample();
})();
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/developer-resources/webhooks/index.html b/packages/noco-docs/dist/0.109.7/developer-resources/webhooks/index.html new file mode 100644 index 0000000000..8304f75c4a --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/developer-resources/webhooks/index.html @@ -0,0 +1,19 @@ + + + + + +Webhooks | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Webhooks

Overview

Some types of notifications can be triggered by a webhook after a particular event.

Open View menu, click on Webhooks

image

Click Add New Webhook

image

Configure Webhook

  • General configurations
    • Webhook Name
    • Webhook Trigger
    • Webhook Type
  • Webhook Type specific configuration : additional configuration details depending on webhook type selected
  • Webhook Conditional Trigger
    • Only records meeting the criteria will trigger webhook

Screenshot 2023-04-06 at 11 39 49 AM

Call Log

Call Log allows user to check the call history of the hook. By default, it has been disabled. However, it can be configured by using environment variable NC_AUTOMATION_LOG_LEVEL.

  • NC_AUTOMATION_LOG_LEVEL=OFF: No logs will be displayed and no history will be inserted to meta database.
  • NC_AUTOMATION_LOG_LEVEL=ERROR: only error logs will be displayed and history of error logs will be inserted to meta database.
  • NC_AUTOMATION_LOG_LEVEL=ALL: Both error and success logs will be displayed and history of both types of logs will be inserted to meta database. This option is only available for Enterprise Edition.

image

Triggers

Webhooks allows user to trigger on certain operations on following database operations

  • AFTER INSERT
  • AFTER UPDATE
  • AFTER DELETE

The triggers will trigger asynchronously without blocking the actual operation.

Applications/services

TriggerDetails
EmailSend email to certain email addresses
SlackNotify via Slack channel
Microsoft TeamsNotify via Microsoft Teams channel
DiscordNotify via Discord channel
MattermostNotify via Mattermost channel
TwilioSend SMS to certain mobile numbers
Whatsapp TwilioSend Whatsapp messages to numbers using Twilio
URLInvoke an HTTP API

Accessing Data: Handlebars

caution

You can access data using handlebars for v1 webhooks only.

The current row data and other details will be available in the hooks payload so the user can use handlebar syntax to use data.

We are using Handlebars library to parse the payload internally.

Example

For a table with column names (id, title, created_at, updated_at).
+For INSERT/ UPDATE based triggers, use following handlebars to access corresponding data fields.

  • {{ data.id }}
  • {{ data.title }}
  • {{ data.created_at }}
  • {{ data.updated_at }}

Note that, for Update trigger - all the fields in the ROW will be accessible, not just the field updated. +For DELETE based triggers, only {{ data.id }} is accessible representing ID of the column deleted.

JSON format

Use {{ json data }} to dump complete data & user information available in JSON format

Additional references:

Handlebar Guide.

Application Guide

Discord

1. Create WebHook

  • On Discord, open your Server Settings and head into the Integrations tab:
  • Click the "Create Webhook" button to create a new webhook!

Screenshot 2022-02-22 at 1 21 59 PM

  • Choose channel to which this webhook will post to.
  • Copy webhook URL

Screenshot 2022-02-22 at 1 23 18 PM

(Sample webhook URL: https://discord.com/api/webhooks/945558283756908644/GNUtiGuzfOky6wZ4ce30XuXc1sbPK3Od7EC-4t6hihh5Fovv6oU9OsdT6mGuoL1QlTzj).
+Detailed procedure for discord webhook described here.

2. Install Plugin

  • Open 'App Store' (under Settings), hover over Discord tile. Click 'Install'.

Screenshot 2022-09-14 at 10 47 59 AM

  • Provide a name of your choice (not to be confused with Discord Channel name).
  • Paste Discord Webhook URL copied from Step (1.) above.

Screenshot 2022-09-14 at 10 52 14 AM

3. Configure

  • Open project and choose a table.
  • Click 'More' > 'Webhooks'.
  • Click 'Create webhook'
  • Configure webhook
    • Title: Name of your choice to identify this Webhook.
    • Event: Trigger event. Choose between.
      • After Insert: Trigger event for new ROW insertion.
      • After Update: Trigger event for existing ROW updation.
      • After Delete: Trigger event for ROW deletion
    • On Condition: [Optional] Enable if you wish to associate additional condition/constraint with the trigger configured above.
    • Notification: Select 'Discord'.
    • Select Discord Channels: Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty.
    • Body: Message to be posted over Discord channel, via webhooks on trigger of configured event.
      • Body can contain plain text &
      • Handlebars {{ }}

Slack

1. Create WebHook

  • Details to create slack webhook are captured here

2. Install Plugin

  • Procedure remain same as listed for DISCORD channel configuration above

3. Configure Webhook

  • Procedure remain same as listed for DISCORD channel configuration above

Microsoft Teams

1. Create WebHook

  • On Teams, open your channel, click on three-dots menu (far right) and select 'Connectors'
154971352-6912d53b-cf71-4edd-a319-1c85be85f0c5
  • Select incoming webhook & click 'Configure'
154971434-0ced97f7-205a-4e2e-8f88-17092cb7771a- Create webhook, Copy webhook URL ![154971683-db16be7f-4f07-4447-8f2e-ac50e133bef8](https://user-images.githubusercontent.com/86527202/155095733-c339a914-5d78-408c-8f1e-9cd75a7783e8.png)

2. Install Plugin

  • Open 'App Store' (under Settings), hover over 'Microsoft Teams' tile. Click 'Install'.

Screenshot 2022-09-14 at 10 53 22 AM

  • Provide a name of your choice (not to be confused with Teams Channel name).
  • Paste MS Teams Webhook URL copied from Step (1.) above.

Screenshot 2022-09-14 at 10 53 31 AM

3. Configure

  • Open project and choose a table.
  • Click 'More' > 'Webhooks'.
  • Click 'Create webhook'
  • Configure webhook
    • Title: Name of your choice to identify this Webhook.
    • Event: Trigger event. Choose between.
      • After Insert: Trigger event for new ROW insertion.
      • After Update: Trigger event for existing ROW updation.
      • After Delete: Trigger event for ROW deletion
    • On Condition: [Optional] Enable if you wish to associate additional condition/constraint with the trigger configured above.
    • Notification: Select 'Microsoft Teams'.
    • Select Teams Channels: Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty.
    • Body: Message to be posted over Teams channel, via webhooks on trigger of configured event.
      • Body can contain plain text &
      • Handlebars {{ }}

Webhook V2

Webhook v2 is available after v0.106.0. Here's the differences.

  • Response Payload has been predefined and cannot configure in Body using Handlebars. The payload can be referenced under Sample Payload in Hook detail page.
  • Support the following bulk operations:
    • AFTER BULK INSERT
    • AFTER BULK UPDATE
    • AFTER BULK DELETE
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/architecture/index.html b/packages/noco-docs/dist/0.109.7/engineering/architecture/index.html new file mode 100644 index 0000000000..4bca022263 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/architecture/index.html @@ -0,0 +1,16 @@ + + + + + +Architecture Overview | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Architecture Overview

By default, if NC_DB is not specified, then SQLite will be used to store your meta data. We suggest users to separate the meta data and user data in different databases.

image

Project TypeMetadata stored inData stored in
Create new projectNC_DBNC_DB
Create new project with External DatabaseNC_DBExternal Database
Create new project from ExcelNC_DBNC_DB
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/builds-and-releases/index.html b/packages/noco-docs/dist/0.109.7/engineering/builds-and-releases/index.html new file mode 100644 index 0000000000..3c186b5790 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/builds-and-releases/index.html @@ -0,0 +1,16 @@ + + + + + +Releases & Builds | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Releases & Builds

Builds of NocoDB

There are 3 kinds of docker builds in NocoDB

Below is an overview of how to make these builds and what happens behind the scenes.

Release builds

How to make a release build ?

  • Click NocoDB release action

  • You should see the below screen

    image

  • Change Use workflow from to Branch: master. If you choose the wrong branch, the workflow will be ended.

    image

  • Then there would be two cases - you can either leave target tag and pervious tag blank or manually input some values

  • Target Tag means the target deployment version, while Previous Tag means the latest version as of now. Previous Tag is used for Release Note only - showing the file / commit differences between two tags.

Tagging

The naming convention would be following given the actual release tag is 0.100.0

  • 0.100.0-beta.0 (first version of pre-release)
  • 0.100.0-beta.1 (include bug fix changes on top of the previous version)
  • 0.100.0-beta.2(include bug fix changes on top of the previous version)
  • and so on ...
  • 0.100.0 (actual release)
  • 0.100.1 (minor bug fix release)
  • 0.100.2 (minor bug fix release)

Case 1: Leaving inputs blank

  • If Previous Tag is blank, then the value will be fetched from latest
  • If Target Tag is blank, then the value will be Previous Tag plus one. Example: 0.90.11 (Previous Tag) + 0.0.1 = 0.90.12 (Target Tag)

Case 2: Manually Input

Why? Sometimes we may mess up in NPM deployment. As NPM doesn't allow us to redeploy to the same tag again, in this case we cannot just use the previous tag + 1. Therefore, we need to use previous tag + 2 instead and we manually configure it.

  • After that, click Run workflow to start
  • You can see Summary for the overall job status.
  • Once release-draft-note and release-executables is finished, then go to releases, edit the draft note and save as draft for time being.
    • Example: Adding header, update content if necessary, and click Auto-generate release notes to include more info.
  • Once release-docker is finished, then test it locally first. You'll be expected to see Upgrade Available notification in UI as we haven't published the release note. (the version is retrieved from there)
  • Once everything is finished, then publish the release note and the deployment is considered as DONE.

How does release action work ?

validate-branch

To check if github.ref is master. Otherwise, other branches will be not accepted.

process-input

To enrich target tag or previous tag if necessary.

pr-to-master

Automate a PR from develop to master branch so that we know the actual differences between the previous tag and the current tag. We choose master branch for a deployment base.

release-npm

Build frontend and backend and release them to NPM. The changes during built such as version bumping will be committed and pushed to a temporary branch and an automated PR will be created and merged to master branch.

Note that once you publish with a certain tag, you cannot publish with the same tag again.

release-draft-note

Generate a draft release note. Some actions need to be done after this step.

release-docker

Build docker image and publish it to Docker Hub. It may take around 15 - 30 mins.

close-issues

Open issues marked with label Status: Fixed and Status: Resolved will be closed by bot automatically with comment mentioning the fix is included in which version.

Example:

image

publish-docs

Publish Documentations

update-sdk-path

nocodb-sdk is used in frontend and backend. However, in develop branch, the value would be file:../nocodb-sdk for development purpose (so that the changes done in nocodb-sdk in develop will be included in frontend and backend). During the deployment, the value will be changed to the target tag. This job is to update them back.

sync-to-develop

Once the deployment is finished, there would be some new changes being pushed to master branch. This job is to sync the changes back to develop so that both branch won't have any difference.

Daily builds

What are daily builds ?

  • NocoDB creates every 6 hours from develop branches and publishes as nocodb/nocodb-daily
  • This is so that we can easily try what is in the develop branch easily.

Docker images

  • The docker images will be built and pushed to Docker Hub (See nocodb/nocodb-daily for the full list).

Timely builds

What are timely builds ?

NocoDB has github actions which creates docker and binaries for each PR! And these can be found as a comment on the last commit of the PR.

Example shown below

  • Go to a PR and click on the comment.

    Screenshot 2023-01-23 at 15 46 36
  • Click on the link to copy the docker image and run it locally.

    Screenshot 2023-01-23 at 15 46 55

This is to

  • reduce pull request cycle time
  • allow issue reporters / reviewers to verify the fix without setting up their local machines

Docker images

When a non-draft Pull Request is created, reopened or synchronized, a timely build for Docker would be triggered for the changes only included in the following paths.

  • packages/nocodb-sdk/**
  • packages/nc-gui/**
  • packages/nc-plugin/**
  • packages/nocodb/**

The docker images will be built and pushed to Docker Hub (See nocodb/nocodb-timely for the full list). Once the image is ready, Github bot will add a comment with the command in the pull request. The tag would be <NOCODB_CURRENT_VERSION>-pr-<PR_NUMBER>-<YYYYMMDD>-<HHMM>.

image

Executables or Binaries

Similarly, we provide a timely build for executables for non-docker users. The source code will be built, packaged as binary files, and pushed to Github (See nocodb/nocodb-timely for the full list).

Currently, we only support the following targets:

  • node16-linux-arm64
  • node16-macos-arm64
  • node16-win-arm64
  • node16-linux-x64
  • node16-macos-x64
  • node16-win-x64

Once the executables are ready, Github bot will add a comment with the commands in the pull request.

image

NocoDB creates Docker and Binaries for each PR.

This is to

  • reduce pull request cycle time
  • allow issue reporters / reviewers to verify the fix without setting up their local machines
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/development-setup/index.html b/packages/noco-docs/dist/0.109.7/engineering/development-setup/index.html new file mode 100644 index 0000000000..5cb24275a7 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/development-setup/index.html @@ -0,0 +1,16 @@ + + + + + +Development Setup | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Development Setup

Clone the repo

git clone https://github.com/nocodb/nocodb
cd nocodb/packages

Build SDK

# build nocodb-sdk
cd nocodb-sdk
npm install
npm run build

Build Backend

# build backend - runs on port 8080
cd ../nocodb
npm install
npm run watch:run

Build Frontend

# build frontend - runs on port 3000
cd ../nc-gui
npm install
npm run dev

Any changes made to frontend and backend will be automatically reflected in the browser.

Enabling CI-CD for Draft PR

CI-CD will be triggered on moving a PR from draft state to Ready for review state & on pushing changes to Develop. To verify CI-CD before requesting for review, add label trigger-CI on Draft PR.

Accessing CI-CD Failure Screenshots

For Playwright tests, screenshots are captured on the tests. These will provide vital clues for debugging possible issues observed in CI-CD. To access screenshots, Open link associated with CI-CD run & click on Artifacts

Screenshot 2022-09-29 at 12 43 37 PM

Accessing 'Easter egg' menu

Double click twice on empty space between View list & Share button to the left top of Grid view; following options become accessible

  1. Export Cache
  2. Delete Cache
  3. Debug Meta
  4. Toggle Beta Features

Screenshot 2023-05-23 at 8 35 14 PM

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/playwright/index.html b/packages/noco-docs/dist/0.109.7/engineering/playwright/index.html new file mode 100644 index 0000000000..7b879ae4f3 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/playwright/index.html @@ -0,0 +1,16 @@ + + + + + +Playwright E2E Testing | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Playwright E2E Testing

How to run tests

All the tests reside in tests/playwright folder.

Make sure to install the dependencies(in the playwright folder):

npm install
npx playwright install chromium --with-deps

Run Test Server

Start the backend test server (in packages/nocodb folder):

npm run watch:run:playwright

Start the frontend test server (in packages/nc-gui folder):

NUXT_PAGE_TRANSITION_DISABLE=true npm run dev

Running all tests

For selecting db type, rename .env.example to .env and set E2E_DEV_DB_TYPE to sqlite(default), mysql or pg.

headless mode(without opening browser):

npm run test

with browser:

npm run test:debug

For setting up mysql(sakila):

docker-compose -f ./tests/playwright/scripts/docker-compose-mysql-playwright.yml  up -d

For setting up postgres(sakila):

docker-compose -f ./tests/playwright/scripts/docker-compose-playwright-pg.yml 

Running individual tests

Add .only to the test you want to run:

test.only('should login', async ({ page }) => {
// ...
})
npm run test

Concepts

Independent tests

  • All tests are independent of each other.
  • Each test starts with a fresh project with a fresh sakila database(option to not use sakila db is also there).
  • Each test creates a new user(email as user@nocodb.com) and logs in with that user to the dashboard.

Caveats:

  • Some stuffs are shared i.e, users, plugins etc. So be catious while writing tests touching that. A fix for this is in the works.
  • In test, we prefix email and project with the test id, which will be deleted after the test is done.

What to test

  • UI verification. This includes verifying the state of the UI element, i.e if the element is visible, if the element has a particular text etc.
  • Test should verify all user flow. A test has a default timeout of 60 seconds. If a test is taking more than 60 seconds, it is a sign that the test should be broken down into smaller tests.
  • Test should also verify all the side effects the feature(i.e. On adding a new column type, should verify column deletion as well) will have, and also error cases.
  • Test name should be descriptive. It should be easy to understand what the test is doing by just reading the test name.

Playwright

  • Playwright is a nodejs library for automating chromium, firefox and webkit.
  • For each test, a new browser context is created. This means that each test runs in a new incognito window.
  • For assertion always use expect from @playwright/test library. This library provides a lot of useful assertions, which also has retry logic built in.

Page Objects

  • Page objects are used to abstract over the components/page. This makes the tests more readable and maintainable.
  • All page objects are in tests/playwright/pages folder.
  • All the test related code should be in page objects.
  • Methods should be as thin as possible and its better to have multiple methods than one big method, which improves reusability.

The methods of a page object can be classified into 2 categories:

  • Actions: Performs an UI actions like click, type, select etc. Is also responsible for waiting for the element to be ready and the action to be performed. This included waiting for API calls to complete.
  • Assertions: Asserts the state of the UI element, i.e if the element is visible, if the element has a particular text etc. Use expect from @playwright/test and if not use expect.poll to wait for the assertion to pass.

Writing a test

Let's write a test for testing filter functionality.

For simplicity, we will have DashboardPage implemented, which will have all the methods related to dashboard page and also its child components like Grid, etc.

Create a test suite

Create a new file filter.spec.ts in tests/playwright/tests folder and use setup method to create a new project and user.

import { test, expect } from '@playwright/test';
import setup, { NcContext } from '../setup';

test.describe('Filter', () => {
let context: NcContext;

test.beforeEach(async ({ page }) => {
context = await setup({ page });
})

test('should filter', async ({ page }) => {
// ...
});
});

Create a page object

Since filter is UI wise scoped to a Toolbar , we will add filter page object to ToolbarPage page object.

export class ToolbarPage extends BasePage {
readonly parent: GridPage | GalleryPage | FormPage | KanbanPage;
readonly filter: ToolbarFilterPage;

constructor(parent: GridPage | GalleryPage | FormPage | KanbanPage) {
super(parent.rootPage);
this.parent = parent;
this.filter = new ToolbarFilterPage(this);
}
}

We will create ToolbarFilterPage page object, which will have all the methods related to filter.

export class ToolbarFilterPage extends BasePage {
readonly toolbar: ToolbarPage;

constructor(toolbar: ToolbarPage) {
super(toolbar.rootPage);
this.toolbar = toolbar;
}
}

Here BasePage is an abstract class, which used to enforce structure for all page objects. Thus all page object should inherit BasePage.

  • Helper methods like waitForResponse and getClipboardText (this can be access on any page object, with this.waitForResponse)
  • Provides structure for page objects, enforces all Page objects to have rootPage property, which is the page object created in the test setup.
  • Enforces all pages to have a get method which will return the locator of the main container of that page, hence we can have focused dom selection, i.e.
// This will only select the button inside the container of the concerned page
await this.get().querySelector('button').count();

Writing an action method

This a method which will reset/clear all the filters. Since this is an action method, it will also wait for the delete filter API to return. Ignoring this API call will cause flakiness in the test, down the line.

async resetFilter() {
await this.waitForResponse({
uiAction: () => this.get().locator('.nc-filter-item-remove-btn').click(),
httpMethodsToMatch: ['DELETE'],
requestUrlPathToMatch: '/api/v1/db/meta/filters/',
});
}

Writing an assertion/verification method

Here we use expect from @playwright/test library, which has retry logic built in.

import { expect } from '@playwright/test';

async verifyFilter({ title }: { title: string }) {
await expect(
this.get().locator(`[data-testid="nc-fields-menu-${title}"]`).locator('input[type="checkbox"]')
).toBeChecked();
}

Tips to avoid flakiness

  • If an UI action, causes an API call or the UI state change, then wait for that API call to complete or the UI state to change.
  • What to wait out can be situation specific, but in general, is best to wait for the final state to be reached, i.e. in the case of creating filter, while it seems like waiting for the filter API to complete is enough, but after its return the table rows are reloaded and the UI state changes, so its better to wait for the table rows to be reloaded.

Accessing playwright report in the CI

  • Open Summary tab in the CI workflow in github actions.
  • Scroll down to Artifacts section.
  • Access reports which suffixed with the db type and shard number(corresponding to the CI workerflow name). i.e playwright-report-mysql-2 is for playwright-mysql-2 workflow.
  • Download it and run npm install -D @playwright/test && npx playwright show-report ./ inside the downloaded folder.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/repository-structure/index.html b/packages/noco-docs/dist/0.109.7/engineering/repository-structure/index.html new file mode 100644 index 0000000000..f64f881291 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/repository-structure/index.html @@ -0,0 +1,16 @@ + + + + + +Repository structure | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Repository structure

We use Lerna to manage multi-packages. We have the following packages.

  • packages/nc-cli : A CLI to create NocoDB app.

  • packages/nocodb-sdk: API client sdk of nocodb.

  • packages/nc-gui: NocoDB Frontend.

  • packages/nc-lib-gui: The build version of nc-gui which will be used in packages/nocodb.

  • packages/nc-plugin: Plugin template.

  • packages/noco-blog: NocoDB Blog which will be auto-released to nocodb/noco-blog.

  • packages/noco-docs: NocoDB Documentation which will be auto-released to nocodb/noco-docs.

  • packages/nocodb: NocoDB Backend, hosted in NPM.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/translation/index.html b/packages/noco-docs/dist/0.109.7/engineering/translation/index.html new file mode 100644 index 0000000000..efc1f39ce9 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/translation/index.html @@ -0,0 +1,18 @@ + + + + + +i18n translation | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

i18n translation

  • NocoDB supports 30+ foreign languages & community contributions are now simplified via Crowdin.

How to add / edit translations ?

Using Github

  • For English, make changes directly to en.json & commit to develop
  • For any other language, use crowdin option.

Using Crowdin

Screenshot 2022-09-08 at 10 26 23 PM

  • Click the language that you wish to contribute

Screenshot 2022-09-08 at 10 29 56 PM

  • Click the Translate button; this opens up Crowdin Online Editor

Screenshot 2022-09-08 at 10 32 17 PM

  • Select string in English on the left-hand menu bar [1]
  • Propose changes [2]
  • Save [3] +Note: Crowdin provides translation recommendation's as in [4]. Click directly if it's apt +

Screenshot 2022-09-08 at 10 37 38 PM

A GitHub Pull Request will be automatically triggered (periodicity- 6 hours). We will follow up on remaining integration work items.

Reference

Refer following articles to get additional details about Crowdin Portal usage

How to add a new language ?

GitHub changes

  • Update enumeration in enums.ts [packages/nc-gui/lib/enums.ts]
  • Map JSON path in a.i18n.ts [packages/nc-gui/plugins/a.i18n.ts]

Crowdin changes [admin only]

  • Open NocoDB project
  • Click on Language on the home tab
  • Select target language, Update
  • Update array in tests/playwright/tests/language.spec.ts

Screenshot 2022-09-08 at 10 52 59 PM

Screenshot 2022-09-08 at 10 54 04 PM

String Categories

  • General: simple & common tokens (save, cancel, submit, open, close, home, and such)
  • Objects: objects from NocoDB POV (project, table, field, column, view, page, and such)
  • Title: screen headers (compact) (menu headers, modal headers)
  • Lables: text box/ radio/ field headers (few words) (Labels over textbox, radio buttons, and such)
  • Activity/ actions: work items (few words) (Create Project, Delete Table, Add Row, and such)
  • Tooltip: additional information associated with work items (usually lengthy) (Additional information provided for activity)
  • Placeholder: placeholders associated with various textboxes (Text placeholders)
  • Msg
    • Info: general/success category for everything
    • Error: warnings & errors
    • Toast: pop-up toast messages

Note: string name should be in camelCase. Use above list as priority order in case of ambiguity.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/engineering/unit-testing/index.html b/packages/noco-docs/dist/0.109.7/engineering/unit-testing/index.html new file mode 100644 index 0000000000..948cd8b2bb --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/engineering/unit-testing/index.html @@ -0,0 +1,19 @@ + + + + + +Writing Unit Tests | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Writing Unit Tests

Unit Tests

  • All individual unit tests are independent of each other. We don't use any shared state between tests.
  • Test environment includes sakila sample database and any change to it by a test is reverted before running other tests.
  • While running unit tests, it tries to connect to mysql server running on localhost:3306 with username root and password password (which can be configured) and if not found, it will use sqlite as a fallback, hence no requirement of any sql server to run tests.

Pre-requisites

  • MySQL is preferred - however tests can fallback on SQLite too

Setup

cd packages/nocodb

npm install

# add a .env file
cp tests/unit/.env.sample tests/unit/.env

# open .env file
open tests/unit/.env

Configure the following variables

DB_HOST : host +DB_PORT : port +DB_USER : username +DB_PASSWORD : password

Run Tests

npm run test:unit

Folder Structure

The root folder for unit tests is packages/nocodb/tests/unit

  • rest folder contains all the test suites for rest apis.
  • model folder contains all the test suites for models.
  • factory folder contains all the helper functions to create test data.
  • init folder contains helper functions to configure test environment.
  • index.test.ts is the root test suite file which imports all the test suites.
  • TestDbMngr.ts is a helper class to manage test databases (i.e. creating, dropping, etc.).

Factory Pattern

  • Use factories for create/update/delete data. No data should be directly create/updated/deleted in the test.
  • While writing a factory make sure that it can be used with as less parameters as possible and use default values for other parameters.
  • Use named parameters for factories.
    createUser({ email, password})
  • Use one file per factory.

Walk through of writing a Unit Test

We will create an Table test suite as an example.

Configure test

We will configure beforeEach which is called before each test is executed. We will use init function from nocodb/packages/nocodb/tests/unit/init/index.ts, which is a helper function which configures the test environment(i.e resetting state, etc.).

init does the following things -

  • It initializes a Noco instance(reused in all tests).
  • Restores meta and sakila database to its initial state.
  • Creates the root user.
  • Returns context which has auth token for the created user, node server instance(app), and dbConfig.

We will use createProject and createProject factories to create a project and a table.

let context;

beforeEach(async function () {
context = await init();

project = await createProject(context);
table = await createTable(context, project);
});

Test case

We will use it function to create a test case. We will use supertest to make a request to the server. We use expect(chai) to assert the response.

it('Get table list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/meta/projects/${project.id}/tables`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list).to.be.an('array').not.empty;
});
note

We can also run individual test by using .only in describe or it function and the running the test command.

it.only('Get table list', async () => {

Integrating the New Test Suite

We create a new file table.test.ts in packages/nocodb/tests/unit/rest/tests directory.

import 'mocha';
import request from 'supertest';
import init from '../../init';
import { createTable, getAllTables } from '../../factory/table';
import { createProject } from '../../factory/project';
import { defaultColumns } from '../../factory/column';
import Model from '../../../../src/lib/models/Model';
import { expect } from 'chai';

function tableTest() {
let context;
let project;
let table;

beforeEach(async function () {
context = await init();

project = await createProject(context);
table = await createTable(context, project);
});

it('Get table list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/meta/projects/${project.id}/tables`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list).to.be.an('array').not.empty;
});
}

export default function () {
describe('Table', tableTests);
}

We can then import the Table test suite to Rest test suite in packages/nocodb/tests/unit/rest/index.test.ts file(Rest test suite is imported in the root test suite file which is packages/nocodb/tests/unit/index.test.ts).

Seeding Sample DB (Sakila)


function tableTest() {
let context;
let sakilaProject: Project;
let customerTable: Model;

beforeEach(async function () {
context = await init();

/******* Start : Seeding sample database **********/
sakilaProject = await createSakilaProject(context);
/******* End : Seeding sample database **********/

customerTable = await getTable({project: sakilaProject, name: 'customer'})
});

it('Get table data list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list[0]['FirstName']).to.equal('MARY');
});
}
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/getting-started/demos/index.html b/packages/noco-docs/dist/0.109.7/getting-started/demos/index.html new file mode 100644 index 0000000000..3dbed5a3ab --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/getting-started/demos/index.html @@ -0,0 +1,16 @@ + + + + + +Demos | NocoDB + + + + +
+
Skip to main content
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/getting-started/environment-variables/index.html b/packages/noco-docs/dist/0.109.7/getting-started/environment-variables/index.html new file mode 100644 index 0000000000..71649a151e --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/getting-started/environment-variables/index.html @@ -0,0 +1,16 @@ + + + + + +Environment Variables | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Environment Variables

For production usecases, it is recommended to configure

  • NC_DB,
  • NC_AUTH_JWT_SECRET,
  • NC_PUBLIC_URL,
  • NC_REDIS_URL
VariableCommentsIf absent
NC_DBSee our database URLsA local SQLite will be created in root folder if NC_DB is not provided
NC_DB_JSONCan be used instead of NC_DB and value should be valid knex connection JSON
NC_DB_JSON_FILECan be used instead of NC_DB and value should be a valid path to knex connection JSON
DATABASE_URLJDBC URL Format. Can be used instead of NC_DB.
DATABASE_URL_FILECan be used instead of DATABASE_URL: path to file containing JDBC URL Format.
NC_AUTH_JWT_SECRETJWT secret used for auth and storing other secretsA random secret will be generated
PORTFor setting app running port8080
DB_QUERY_LIMIT_DEFAULTDefault pagination limit25
DB_QUERY_LIMIT_MAXMaximum allowed pagination limit1000
DB_QUERY_LIMIT_MINMinimum allowed pagination limit1
NC_TOOL_DIRApp directory to keep metadata and app related filesDefaults to current working directory. In docker maps to /usr/app/data/ for mounting volume.
NC_PUBLIC_URLUsed for sending Email invitationsBest guess from http request params
NC_JWT_EXPIRES_INJWT token expiry time10h
NC_CONNECT_TO_EXTERNAL_DB_DISABLEDDisable Project creation with external database
NC_INVITE_ONLY_SIGNUPRemoved since version 0.99.0 and now it's recommended to use super admin settings menu. Allow users to signup only via invite url, value should be any non-empty string.
NUXT_PUBLIC_NC_BACKEND_URLCustom Backend URLhttp://localhost:8080 will be used
NC_REQUEST_BODY_SIZERequest body size limit1048576
NC_EXPORT_MAX_TIMEOUTAfter NC_EXPORT_MAX_TIMEOUT csv gets downloaded in batchesDefault value 5000(in millisecond) will be used
NC_DISABLE_TELEDisable telemetry
NC_DASHBOARD_URLCustom dashboard url path/dashboard
NC_GOOGLE_CLIENT_IDGoogle client id to enable google authentication
NC_GOOGLE_CLIENT_SECRETGoogle client secret to enable google authentication
NC_MIGRATIONS_DISABLEDDisable NocoDB migration
NC_MINIf set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable
NC_SENTRY_DSNFor Sentry monitoring
NC_REDIS_URLCustom Redis URL. Example: redis://:authpassword@127.0.0.1:6380/4Meta data will be stored in memory
NC_DISABLE_ERR_REPORTDisable error reporting
NC_DISABLE_CACHETo be used only while debugging. On setting this to true - meta data be fetched from db instead of redis/cache.false
AWS_ACCESS_KEY_IDFor Litestream - S3 access key idIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_SECRET_ACCESS_KEYFor Litestream - S3 secret access keyIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_BUCKETFor Litestream - S3 bucketIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_BUCKET_PATHFor Litestream - S3 bucket path (like folder within S3 bucket)If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
NC_SMTP_FROMFor SMTP plugin - Email sender address
NC_SMTP_HOSTFor SMTP plugin - SMTP host value
NC_SMTP_PORTFor SMTP plugin - SMTP port value
NC_SMTP_USERNAMEFor SMTP plugin (Optional) - SMTP username value for authentication
NC_SMTP_PASSWORDFor SMTP plugin (Optional) - SMTP password value for authentication
NC_SMTP_SECUREFor SMTP plugin (Optional) - To enable secure set value as true any other value treated as false
NC_SMTP_IGNORE_TLSFor SMTP plugin (Optional) - To ignore tls set value as true any other value treated as false. For more info visit https://nodemailer.com/smtp/
NC_S3_BUCKET_NAMEFor S3 storage plugin - AWS S3 bucket name
NC_S3_REGIONFor S3 storage plugin - AWS S3 region
NC_S3_ACCESS_KEYFor S3 storage plugin - AWS access key credential for accessing resource
NC_S3_ACCESS_SECRETFor S3 storage plugin - AWS access secret credential for accessing resource
NC_ADMIN_EMAILFor updating/creating super admin with provided email and password
NC_ATTACHMENT_FIELD_SIZEFor setting the attachment field size(in Bytes)Defaults to 20MB
NC_ADMIN_PASSWORDFor updating/creating super admin with provided email and password. Your password should have at least 8 letters with one uppercase, one number and one special letter(Allowed special chars $&+,:;=?@#|'.^*()%!_-" )
NODE_OPTIONSFor passing Node.js options to instance
NC_MINIMAL_DBSCreate a new SQLite file for each project. All the db files are stored in nc_minimal_dbs folder in current working directory. (This option restricts project creation on external sources)
NC_DISABLE_AUDITDisable Audit Logfalse
NC_AUTOMATION_LOG_LEVELPossible Values: OFF, ERROR, ALL. See Webhooks for details.OFF
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/getting-started/installation/index.html b/packages/noco-docs/dist/0.109.7/getting-started/installation/index.html new file mode 100644 index 0000000000..b7051e0e5d --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/getting-started/installation/index.html @@ -0,0 +1,20 @@ + + + + + +Installation | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Installation

Simple installation - takes about three minutes!

Prerequisites

Quick try

Docker

If you are a Docker user, you may try this way!

docker run -d --name nocodb \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
nocodb/nocodb:latest
tip

To persist data in docker you can mount volume at /usr/app/data/ since 0.10.6. In older version mount at /usr/src/app. Otherwise your data will be lost after recreating the container.

tip

If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for MySQL Docker.

Docker Compose

We provide different docker-compose.yml files under this directory. Here are some examples.

git clone https://github.com/nocodb/nocodb
cd nocodb/docker-compose/mysql
docker-compose up -d
tip

To persist data in docker you can mount volume at /usr/app/data/ since 0.10.6. In older version mount at /usr/src/app.

tip

If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for MySQL Docker Compose.

NPX

You can run below command if you need an interactive configuration.

npx create-nocodb-app

Preview:

image

Homebrew

brew tap nocodb/nocodb
brew install nocodb
nocodb

Executables

You can download executables directly and run without any extra dependancy. Use the right command based on your platform.

MacOS (x64)
curl http://get.nocodb.com/macos-x64 -o nocodb -L \
&& chmod +x nocodb \
&& ./nocodb
MacOS (arm64)
curl http://get.nocodb.com/macos-arm64 -o nocodb -L \
&& chmod +x nocodb \
&& ./nocodb
Linux (x64)
curl http://get.nocodb.com/linux-x64 -o nocodb -L \
&& chmod +x nocodb \
&& ./nocodb
Linux (arm64)
curl http://get.nocodb.com/linux-arm64 -o nocodb -L \
&& chmod +x nocodb \
&& ./nocodb
Windows (x64)
iwr http://get.nocodb.com/win-x64.exe
.\Noco-win-x64.exe
Windows (arm64)
iwr http://get.nocodb.com/win-arm64.exe
.\Noco-win-arm64.exe

Node Application

We provide a simple NodeJS Application for getting started.

git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start

AWS ECS (Fargate)

Click to Expand

Create ECS Cluster

aws ecs create-cluster \
--cluster-name <YOUR_ECS_CLUSTER>

Create Log group

aws logs create-log-group \
--log-group-name /ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME>

Create ECS Task Definiton

Every time you create it, it will add a new version. If it is not existing, the version will be 1.

aws ecs register-task-definition \
--cli-input-json "file://./<YOUR_TASK_DEF_NAME>.json"
note

This json file defines the container specification. You can define secrets such as NC_DB and environment variables here.

Here's the sample Task Definition

{
"family": "nocodb-sample-task-def",
"networkMode": "awsvpc",
"containerDefinitions": [{
"name": "<YOUR_CONTAINER_NAME>",
"image": "nocodb/nocodb:latest",
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME>",
"awslogs-region": "<YOUR_AWS_REGION>",
"awslogs-stream-prefix": "ecs"
}
},
"secrets": [{
"name": "<YOUR_SECRETS_NAME>",
"valueFrom": "<YOUR_SECRET_ARN>"
}],
"environment": [{
"name": "<YOUR_ENV_VARIABLE_NAME>",
"value": "<YOUR_ENV_VARIABLE_VALUE>"
}],
"portMappings": [{
"containerPort": 8080,
"hostPort": 8080,
"protocol": "tcp"
}]
}],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512",
"executionRoleArn": "<YOUR_ECS_EXECUTION_ROLE_ARN>",
"taskRoleArn": "<YOUR_ECS_TASK_ROLE_ARN>"
}

Create ECS Service

aws ecs create-service \
--cluster <YOUR_ECS_CLUSTER> \
--service-name <YOUR_SERVICE_NAME> \
--task-definition <YOUR_TASK_DEF>:<YOUR_TASK_DEF_VERSION> \
--desired-count <DESIRED_COUNT> \
--launch-type "FARGATE" \
--platform-version <VERSION> \
--health-check-grace-period-seconds <GRACE_PERIOD_IN_SECOND> \
--network-configuration "awsvpcConfiguration={subnets=["<YOUR_SUBSETS>"], securityGroups=["<YOUR_SECURITY_GROUPS>"], assignPublicIp=ENABLED}" \
--load-balancer targetGroupArn=<TARGET_GROUP_ARN>,containerName=<CONTAINER_NAME>,containerPort=<YOUR_CONTAINER_PORT>
note

If your service fails to start, you may check the logs in ECS console or in Cloudwatch. Generally it fails due to the connection between ECS container and NC_DB. Make sure the security groups have the correct inbound and outbound rules. +

GCP (Cloud Run)

Click to Expand

Pull NocoDB Image on Cloud Shell

Since Cloud Run only supports images from Google Container Registry (GCR) or Artifact Registry, we need to pull NocoDB image, tag it and push it in GCP using Cloud Shell. Here are some sample commands which you can execute in Cloud Shell.

# pull latest NocoDB image
docker pull nocodb/nocodb:latest

# tag the image
docker tag nocodb/nocodb:latest gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest

# push the image to GCR
docker push gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest

Deploy NocoDB on Cloud Run

gcloud run deploy --image=gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest \
--region=us-central1 \
--allow-unauthenticated \
--platform=managed

DigitalOcean (App)

Click to Expand

Create Apps

On Home page, Click on Create icon & Select Apps (Deploy your code).

Screenshot 2022-02-19 at 12 17 43 PM

Choose Source: Docker Hub

Screenshot 2022-02-19 at 12 22 01 PM

Choose Source: Repository

Configure Source Repository as nocodb/nocodb. Optionally you can pick release tag if you are interested in specific NocoDB version.

Screenshot 2022-02-19 at 12 23 11 PM

[Optional] Additional Configurations

Screenshot 2022-02-19 at 12 24 44 PM

Name your web service

Pick a name for your NocoDB application. This name will become part of URL subsequently +Pick nearest Region for cloud hosting +Screenshot 2022-02-19 at 12 28 11 PM

Finalize and Launch

Cloudron

Click to Expand

Log into Cloudron and select App Store

image

Search NocoDB

image

Click Install

image

Configure NocoDB

image

Go to My App and Launch NocoDB

image

CapRover

Click to Expand

Login and Click One-Click Apps / Databases

image

Search NocoDB

image

Configure NocoDB and Deploy

image

Railway

Click to Expand

Go to Templates, Search NocoDB and click Deploy

image

Configure NocoDB and Deploy

image

FreeBSD / FreeNAS / TrueNAS Jail

See here provided by C. R. Zamana.

Sample Demos

Code Sandbox

Docker deploying with one command

Using NPX

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/getting-started/upgrading/index.html b/packages/noco-docs/dist/0.109.7/getting-started/upgrading/index.html new file mode 100644 index 0000000000..3de0cb4ec8 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/getting-started/upgrading/index.html @@ -0,0 +1,16 @@ + + + + + +Upgrading | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Upgrading

By default, if NC_DB is not specified upon installation, then SQLite will be used to store metadata. We suggest users to separate the metadata and user data in different databases as pictured in our architecture.

Docker

Find, Stop & Delete NocoDB Docker Container

# find NocoDB container ID
docker ps
# stop NocoDB container
docker stop <YOUR_CONTAINER_ID>
# delete NocoDB container
docker rm <YOUR_CONTAINER_ID>

Note: Deleting your docker container without setting NC_DB or mounting to a persistent volume for a default SQLite database will result in losing your data. See examples below.

Find & Remove NocoDB Docker Image

# find NocoDB image
docker images
# delete NocoDB image
docker rmi <YOUR_IMAGE_ID>

Pull the latest NocoDB image with same environment variables

docker run -d -p 8080:8080 \
-e NC_DB="<YOUR_NC_DB_URL>" \
-e NC_AUTH_JWT_SECRET="<YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN>" \
nocodb/nocodb:latest

Updating nocodb docker container is similar to updating any other docker containers.

Example: Docker Upgrade

Screen Shot 2021-09-16 at 09 23 07

Node

Updating docker container is similar to updating a npm package.

From your root folder

Uninstall NocoDB package

npm uninstall nocodb

Install NocoDB package

npm install --save nocodb

Homebrew

Run following commands to upgrade Homebrew Nocodb version.

# Update the local homebrew formulas
brew update
# Upgrade nocodb package
brew upgrade nocodb
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/index.html b/packages/noco-docs/dist/0.109.7/index.html new file mode 100644 index 0000000000..1cce48ca91 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/index.html @@ -0,0 +1,16 @@ + + + + + +Welcome | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Welcome

Welcome!

image

NocoDB is a no-code database platform that allows teams to collaborate and build applications with ease of a familiar and intuitive spreadsheet interface. This allows even non-developers or business users to become software creators.

NocoDB works by connecting to any relational database and transforming them into a smart spreadsheet interface! This allows you to build no-code applications collaboratively with teams. NocoDB currently works with MySQL, PostgreSQL, Microsoft SQL Server, SQLite, Amazon Aurora & MariaDB databases.

Also NocoDB's app store allows you to build business workflows on views with combination of Slack, Microsoft Teams, Discord, Twilio, Whatsapp, Email & any 3rd party APIs too. Plus NocoDB provides programmatic access to APIs so that you can build integrations with Zapier / Integromat and custom applications too.

Features

Rich Spreadsheet Interface

  •  Basic Operations: Create, Read, Update and Delete on Tables, Columns, and Rows
  •  Fields Operations: Sort, Filter, Hide / Unhide Columns
  •  Multiple Views Types: Grid (By default), Gallery, Form View and Kanban View
  •  View Permissions Types: Collaborative Views, & Locked Views
  •  Share Bases / Views: either Public or Private (with Password Protected)
  •  Variant Cell Types: ID, LinkToAnotherRecord, Lookup, Rollup, SingleLineText, Attachement, Currency, Formula and etc
  •  Access Control with Roles : Fine-grained Access Control at different levels
  •  and more ...

App Store for Workflow Automations

We provide different integrations in three main categories. See App Store for details.

  •  Chat : Slack, Discord, Mattermost, and etc
  •  Email : AWS SES, SMTP, MailerSend, and etc
  •  Storage : AWS S3, Google Cloud Storage, Minio, and etc

Programmatic Access

We provide the following ways to let users to invoke actions in a programmatic way. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB.

  •  REST APIs
  •  NocoDB SDK

Sync Schema

We allow you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from environment to others. See Sync Schema for details.

Audit

We are keeping all the user operation logs under one place. See Audit for details.

Why are we building this?

Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by a Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings has meant horrible access controls, vendor lockin, data lockin, abrupt price changes & most importantly a glass ceiling on what's possible in future.

Our Mission

Our mission is to provide the most powerful no-code interface for databases which is open source to every single internet business in the world. This would not only democratise access to a powerful computing tool but also bring forth a billion+ people who will have radical tinkering-and-building abilities on internet.

How can I contribute to NocoDB's development ?

Please refer to here for the contribution guidelines.

Where can I join the NocoDB community?

Follow us for daily updates, content, and other activities with our community:

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/account-settings/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/account-settings/index.html new file mode 100644 index 0000000000..abad2036e9 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/account-settings/index.html @@ -0,0 +1,18 @@ + + + + + +Account Settings | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Account Settings

Overview

Account Settings allow you to manage your account such as your password or tokens.

image

Reset Password

image

Token Management

  • Newly created tokens are associated with the created user and it will have all permissions that particular user has.
  • Existing token will work as it is and only be visible to the super admin.
image

If you are a super admin, you can also manage all user roles in organization level.

User Management

Permissions within NocoDB are divided into two levels: Organisation level and Project level.

Organisation Level Permissions:

  • Org Level Creator: Allows users to create new projects and access invited projects.
  • Org Level Viewer: Allows users to access invited projects but does not permit the creation of new projects.

image

Project Level Permissions:

  • Owner: The user who created the project. A project can have only one owner. The owner persists until the project exists and the role is non-transferable. The owner has access to carry out any operations within the project, including deleting it.
  • Creator: Has access to carry out any operations within the project except deleting the project and removing the "Owner."
  • Editor: Can modify data but cannot modify the schema (add/remove columns, tables, users, and such).
  • Commenter: Can neither modify data nor schema, can only see data and can mark row-level comments.
  • Viewer: Can only see data.

Additional access details for project level permissions can be found here. +Please note that the above-mentioned Project Level Permissions are additional to the already defined Organisation Level Permissions. +In addition to the previously defined permissions, NocoDB also includes the role of "Super Admin." The "Super Admin" is the first user to sign up on this NocoDB installation. An organisation can have only one "Super Admin" and this role is non-transferable. The "Super Admin" will have the equivalent permissions of an "Org Level Creator" and "Owner" for all projects within the organisation.

Enable / Disable Signup

Signup without an invitation is disabled by default and can be managed from UI by a super admin.

image

App Store

image

We provide different integrations in three main categories.

CategoryApp Name
ChatMicrosoft Teams
Discord
Twilio
Whatsapp Twilio
Mattermost
Slack
EmailSMTP
MailerSend
AWS SES
StorageAWS S3
Minio
Google Cloud Storage
Spaces
Backblaze B2
Vultr Object Storage
OvhCloud Object Storage
Linode Object Storage
UpCloud Object Storage
Scaleway Object Storage

License

You can configure NocoDB Enterprise License key here

Screenshot 2023-01-12 at 2 30 57 PM

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/audit/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/audit/index.html new file mode 100644 index 0000000000..9ded5d1cf6 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/audit/index.html @@ -0,0 +1,16 @@ + + + + + +Audit | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Audit

Overview

We are keeping all the user operation logs under Audit. To access it, click the down arrow button next to Project Name on the top left side, then select Team & Settings.

info

We can disable audit logs by setting NC_DISABLE_AUDIT to true.

image

Then, under SETTINGS, click Audit.

image
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/code-snippets/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/code-snippets/index.html new file mode 100644 index 0000000000..602772c6c0 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/code-snippets/index.html @@ -0,0 +1,16 @@ + + + + + +Code Snippets | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Code Snippets

Overview

In the table toolbar, click Table name button and click Get API Snippet.

image

A modal box will be shown with sample code snippet for List API.

image

Supported Snippet

Shell

  • cURL
  • wget

Javascript

  • Axios
  • Fetch
  • jQuery
  • XHR

Node

  • Axios
  • Fetch
  • Request
  • Native
  • Unirest

NocoDB SDK

  • Javascript
  • Node

PHP

Python

  • http.client
  • request

Ruby

Java

C

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/column-operations/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/column-operations/index.html new file mode 100644 index 0000000000..47df78585a --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/column-operations/index.html @@ -0,0 +1,16 @@ + + + + + +Column Operations | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Column Operations

Fields

Click Fields to control the visibility of a field.

image

By default, all system fields will be hid. However, you can tick Show system fields to make them visible.

image

Re-order Columns

Column positions can be re-ordered. Open Fields menu, and re-order fields as needed by dragging and dropping the drag icon.

image

Hide / Unhide Columns

To hide / unhide columns, open Fields menu, tick checkbox to keep the column visible, untick checkbox to remove it from the view.

tip

You can create different grid views with different fields shown in each view.

image

Sort

Sorting allows you to order contents alphabetically (A → Z) / (Z → A) (OR) in ascending / descending order. NocoDB allows nested sorting. You can choose column fields & order in which to apply nested sorting. Lookup, Formula, Nested Data are also supported in Sorting.

imageimageimage

Filter

Filters allow you to restrict / organize your data on the view as per your needs. NocoDB allows nested filters. You can choose multiple columns and conditions to apply filter. Between filters, you can opt for either and or or mode operation. Lookup, Formula, Nested Data are also supported in Filtering.

imageimage

You can also group several filters together using Filter Group.

image

Enable NULL and EMPTY Filters

NULL filters (is null & is not null) and EMPTY filters (is empty & is not empty) are hidden by default. If you wish to filter out either one only, you may enable Show NULL and EMPTY Filter in Project Settings.

image

Otherwise, we can use Blank filters to filter out cells with NULL values and EMPTY values.

Supported Filters

Currently we support different types of filters for corresponding columns. Please refer the below matrix for details.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/column-types/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/column-types/index.html new file mode 100644 index 0000000000..5434ec2b60 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/column-types/index.html @@ -0,0 +1,18 @@ + + + + + +Column Types | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Column Types

Available Column Types

TypeDescription
LinkToAnotherRecordHas Many or Many To Many columns
SingleLineTextFor short text
LongTextFor lengthy string content
AttachmentFile attachment column
CheckboxBoolean value
MultiSelectMultiple options can be selected once
SingleSelectSingle option select
DateDate selector
YearYear selector
TimeTime selector
PhoneNumberPhone number field
EmailEmail field
URLValid URL field
NumberAny type of number
DecimalFractional number
CurrencyCurrency value
PercentPercentage
DurationDuration
RatingRating
FormulaFormula based generated column
RollupPerforms calculations and aggregations
DateTimeDate & Time selector
QR CodeQR Code visualization of another referenced column
BarcodeBarcode visualization of another referenced column
GeometryGeometry column
GeoDataGeoData column
JsonJson column
SpecificDBTypeCustom DB type option

Database Types

LinkToAnotherRecord

For more about Link To Another Record, please visit here.

SingleLineText

Available Database Types

DatabaseTypesDefault Type
MySQLchar, varchar, nchar, text, tinytext, mediumtext, longtextvarchar
PostgreSQLchar, character, character varying, textcharacter varying
SQL Serverchar, ntext, text, varchar, nvarcharvarchar
SQLitecharacter, text, varcharvarchar

LongText

Available Database Types

DatabaseTypesDefault Type
MySQLchar, varchar, nchar, text, tinytext, mediumtext, longtexttext
PostgreSQLchar, character, character varying, texttext
SQL Serverchar, ntext, text, varchar, nvarchartext
SQLitecharacter, text, varchartext

Attachment

Available Database Types

DatabaseTypesDefault Type
MySQLjson, char, varchar, nchar, text, tinytext, mediumtext, longtexttext
PostgreSQLjson, char, character, character varying, texttext
SQL Serverchar, ntext, text, varchar, nvarchartext
SQLitecharacter, text, varchartext

Checkbox

Available Database Types

DatabaseTypesDefault Type
MySQLint, smallint, mediumint, bigint, bit, boolean, serial, tinyinttinyint
PostgreSQLbit, bool, int2, int4, int8, boolean, smallint, int, integer, bigint, bigserial, char, int4range, int8range, serial, serial2, serial8bool
SQL Serverbigint, bit, int, tinyinttinyint
SQLiteint, integer, tinyint, smallint, mediumint, bigint, int2, int8, boolean

MultiSelect

Available Database Types

DatabaseTypesDefault Type
MySQLset, text, tinytext, mediumtext, longtextset
PostgreSQLtexttext
SQL Servertext, ntexttext
SQLitetext, varchartext

SingleSelect

Available Database Types

DatabaseTypesDefault Type
MySQLenum, text, tinytext, mediumtext, longtextenum
PostgreSQLtexttext
SQL Servertext, ntexttext
SQLitetext, varchartext

Date

Available Database Types

DatabaseTypesDefault Type
MySQLdate, datetime, timestamp, varcharvarchar
PostgreSQLdate, timestamp, timestamp without time zone, timestamptz, timestamp with time zone
SQL Serverdatedate
SQLitedate, varcharvarchar

Year

Available Database Types

DatabaseTypesDefault Type
MySQLyearyear
PostgreSQLintint
SQL Serverintint
SQLiteint, integer, tinyint, smallint, mediumint, bigint, int2, int8year

Time

Available Database Types

DatabaseTypesDefault Type
MySQLtimetime
PostgreSQLtime, time without time zone, timestamp, timestamp without time zone, timestamptz, timestamp with time zone, timetz, time with time zonetime
SQL Servertimetime
SQLiteint, integer, tinyint, smallint, mediumint, bigint, int2, int8time

PhoneNumber

Available Database Types

DatabaseTypesDefault Type
MySQLvarcharvarchar
PostgreSQLcharacter varyingcharacter varying
SQL Servervarcharvarchar
SQLitevarchar, textvarchar

Email

Available Database Types

DatabaseTypesDefault Type
MySQLvarcharvarchar
PostgreSQLcharacter varyingcharacter varying
SQL Servervarcharvarchar
SQLitevarchar, textvarchar

URL

Available Database Types

DatabaseTypesDefault Type
MySQLtext, tinytext, mediumtext, longtext, varcharvarchar
PostgreSQLcharacter varying, textcharacter varying
SQL Servervarchar, textvarchar
SQLitevarchar, textvarchar

Number

Available Database Types

DatabaseTypesDefault Type
MySQLint, smallint, mediumint, bigint, bit, float, decimal, double, serialint
PostgreSQLint, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserialint8
SQL Serverint, bigint, bit, decimal, float, numeric, real, smallint, tinyintint
SQLiteint, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric, real, double, double precision, floatinteger

Decimal

Available Database Types

DatabaseTypesDefault Type
MySQLfloat, decimal, double, serialdecimal
PostgreSQLdouble precision,float4,float8decimal
SQL Serverdecimal, floatdecimal
SQLitereal, double, double precision, float, numericdecimal

Currency

Available Database Types

DatabaseTypesDefault Type
MySQLdecimal, float, double, serial', 'int, smallint, mediumint, bigint, bitdecimal
PostgreSQLint, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, money', 'float4, float8decimal
SQL Serverint, bigint, bit, decimal, float, numeric, real, smallint, tinyintdecimal
SQLitereal, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numericdouble precision

Percent

Available Database Types

DatabaseTypesDefault Type
MySQLdecimal, float, double, serial', 'int, smallint, mediumint, bigint, bitdouble
PostgreSQLint, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserialdouble
SQL Serverint, bigint, bit, decimal, float, numeric, real, smallint, tinyintdouble
SQLitereal, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numericdouble

Duration

Available Database Types

DatabaseTypesDefault Type
MySQLdecimal, float, double, serial', 'int, smallint, mediumint, bigint, bitint
PostgreSQLint, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserialint8
SQL Serverint, bigint, bit, decimal, float, numeric, real, smallint, tinyintint
SQLiteint, integer, tinyint, smallint, mediumint, bigint, int2, int8integer

Rating

Available Database Types

DatabaseTypesDefault Type
MySQLdecimal, float, double, serial', 'int, smallint, mediumint, bigint, bitfloat
PostgreSQLint, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserialfloat8
SQL Serverint, bigint, bit, decimal, float, numeric, real, smallint, tinyintfloat
SQLitereal, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numericfloat

Formula

For more about Formulas, please visit here.

QR-Code

Encodes the value of a reference column as QR code. The following column types are supported for the for reference column:

  • Formula
  • Single Line Text
  • Long Text
  • Phone Number
  • URL
  • Email

Since it's a virtual column, the cell content (QR code) cannot be changed directly.

Barcode

Encodes the value of a reference column as Barcode. Supported barcode formats: CODE128, EAN, EAN-13, EAN-8, EAN-5, EAN-2, UPC (A), CODE39, ITF-14, MSI, Pharmacode, Codabar. The following column types are supported for the for reference column:

  • Formula
  • Single Line Text
  • Long Text
  • Phone Number
  • URL
  • Email

Since it's a virtual column, the cell content (Barcode) cannot be changed directly.

Rollup

For more about Rollup, please visit here.

DateTime

Available Database Types

DatabaseTypesDefault Type
MySQLdatetime, timestamp, varchardatetime
PostgreSQLtimestamp, timestamp without time zone, timestamptz, timestamp with time zonedatetime
SQL Serverdatetime, datetime2, datetimeoffsetdatetime
SQLitedatetime, timestampdatetime

Geometry

Available Database Types

DatabaseTypes
MySQLgeometry, point, linestring, polygon, multipoint, multilinestring, multipolygon
PostgreSQLpolygon, point, circle, box, line, lseg, path, circle
SQL Servergeometry
SQLitetext

GeoData

Encodes a geographic location which consists of a latitude and a longitude. +Both are internally stored as one string, where latitude and longitude are separated by ';' +Example: "52.2134;29.1442"

Available Database Types

DatabaseTypes
MySQLchar, varchar, nchar, text, tinytext, mediumtext, longtext
PostgreSQLchar, character, character varying, text
SQL Serverdecimal, float
SQLitecharacter, text, varchar

JSON

Available Database Types

DatabaseTypes
MySQLjson
PostgreSQLjson
SQL Servertext, ntext
SQLitetext

SpecificDBType

Available Database Types

DatabaseTypes
MySQLAll types are available
PostgreSQLAll types are available
SQL ServerAll types are available
SQLiteAll types are available
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/dashboard/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/dashboard/index.html new file mode 100644 index 0000000000..9ef9bdb23e --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/dashboard/index.html @@ -0,0 +1,16 @@ + + + + + +Dashboard | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Dashboard

Setup Your First Super Admin

Once you have started NocoDB, you can visit the dashboard via example.com. You will be redirected to example.com/#/signup.

Enter your work email and your password.

image
note

Your password has at least 8 letters. No other constraints on case, numbers or special characters.

Initialize Your First Project

Once you have logged into NocoDB, you should see My Projects.

Screenshot 2022-12-29 at 2 54 43 PM

To create a new project, you can click New Project.

You need to specify the project name. The data will be stored in NC_DB. If it is not specified, a local SQLite will be created and used.

note

NC_DB is an environment variable used to store the meta data in the given database.

Screenshot 2022-12-29 at 2 54 57 PM

Connecting to External Database

Click on three-dot menu adjacent to BASES. Pick required database option from the menu Connect to new datasource.

tip

If you are running NocoDB on Docker and your local DB is running on your host machine, your Host Address would be host.docker.internal instead of localhost.

Screenshot 2022-12-29 at 2 55 39 PM

Above menu is also accessible from Team & Settings > Data Sources. Click on New button to add existing database.

image

You need to specify the project name, API type, and other database parameters.

image

Currently it supports MySQL, Postgres, MSSQL and SQLite.

You can also configure associated SSL & advanced parameters.

image
tip

You can click Edit Connection JSON and modify SSL settings in "ssl".

{
"client": "pg",
"connection": {
"host": "<YOUR_HOST>",
"port": "5432",
"user": "<YOUR_DB_USER>",
"password": "<YOUR_DB_PASSWORD>",
"database": "<YOUR_DB_NAME>",
"ssl": {
"require": true,
"rejectUnauthorized": false,
"sslMode": "no-verify"
}
}
}
tip

You can click Edit Connection JSON and specify the schema you want to use in "searchPath".

{
"client": "pg",
"connection": {
...
},
"searchPath": [ "<YOUR_TARGET_SCHEMA>" ]
}

Click Test Database Connection to see if the connection can be established or not. NocoDB creates a new empty database with specified parameters if the database doesn't exist.

image
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/display-value/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/display-value/index.html new file mode 100644 index 0000000000..6e2b44395d --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/display-value/index.html @@ -0,0 +1,16 @@ + + + + + +Display Value | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Display Value

What is a Display Value ?

  • Display Value as the name stands is the primary or main value within a row of a table that you generally associate that row with.
  • It should be usually associated with a column which is uniquely identifiable. However, this uniqueness is not enforced at the database level.
  • Before v0.105.0, Display Value was known as Primary Value.

What is the use of Display Value ?

  • Within a spreadsheet, Display Value are always highlighted so that it is easier to recognise what row we are in.
  • And when LinkToAnotherRecord is created between two tables - it is the Display Value that appears in LinkToAnotheRecord column.

Example : Display Value highlighted in Actor table

image

Example : Display Value highlighted in Film table

image

Example : Display Value associated when LinkToAnotherRecord is created

image

How to set Display Value ?

Click down arrow in the target column. Click Set as Display Value.

image

How is Display Value identfied for existing database tables ?

  • It is usually the first column after the primary key which is not a number.
  • If there is no column which is not a number then the column adjacent to primary key is chosen.

Can I change the Display Value to another column within tables ?

  • Yes, you can use the same way mentioned above to set Display Value.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/expanded-form/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/expanded-form/index.html new file mode 100644 index 0000000000..d377b3bde2 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/expanded-form/index.html @@ -0,0 +1,16 @@ + + + + + +Expanded Form | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Expanded Form

Overview

Expanded Form allows you to edit a row data in a form. It also shows the activity feed such as user comments or revision history. It can be also shared by others by copying the record URL.

image

Expanding a Record

In a grid view, we can hover a row record and a doulbe arrow will be shown. By clicking it, the expanded form will be opened.

image

Alternatively, we can highlight a cell and press the space bar. The expanded form for the correpsonding row will be opened.

Activity Feed

In an expanded form, we can click Toggle Comment View button to show the activity feed where we can optionally filter out comments only.

image

Copy Record URL

In an expanded form, we can click Copy Record URL to share the record form to other authorized users.

image

Save Button Option

By default, when we save the form, the expanded form will be closed, i.e. Save & Exit. However, if we prefer not to close the form even after saving, we can choose Save & Stay mode instead. This is useful when you are editing a long form and you want to save it from time to time.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/formulas/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/formulas/index.html new file mode 100644 index 0000000000..3a53d36422 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/formulas/index.html @@ -0,0 +1,17 @@ + + + + + +Formulas | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Formulas

Adding formula column

image

1. Click on '+' (Add column)

2. Populate column Name

3. Select column Type as 'Formula'

4. Insert required formula

  • You can use explicit numerical values/ strings as needed, e.g. 123 (numeric) or "123" (string).
  • You can reference column names in equation with {}, e.g. {column_name}, if the column name conflicts with literals
  • Table below lists supported formula & associated syntax
  • Nested formula (formula equation referring to another formula column) is supported

5. Click on 'Save'

Editing formula column

Unlike other column types, formula cells cannot be modified by double-clicking since the value is generated based on the formula. Instead, the vaule can be changed by updating the formula in the column setting.

image

Available Formula Features

Numeric Functions

NameSyntaxSampleOutput
ABSABS(value)ABS({Column})Absolute value of the input parameter
ADDADD(value1,[value2,...])ADD({Column1}, {Column2})Sum of input parameters
AVGAVG(value1,[value2,...])AVG({Column1}, {Column2})Average of input parameters
CEILINGCEILING(value)CEILING({Column})Rounded next largest integer value of input parameter
EXPEXP(value)EXP({Column})Exponential value of input parameter (e^x)
FLOORFLOOR(value)FLOOR({Column})Rounded largest integer less than or equal to input parameter
INTINT(value)INT({Column})Integer value of input parameter
LOGLOG([base], value)LOG(10, {Column})Logarithm of input parameter to the base (default = e) specified
MAXMAX(value1,[value2,...])MAX({Column1}, {Column2}, {Column3})Maximum value amongst input parameters
MINMIN(value1,[value2,...])MIN({Column1}, {Column2}, {Column3})Minimum value amongst input parameters
MODMOD(value1, value2)MOD({Column}, 2)Remainder after integer division of input parameters
POWERPOWER(base, exponent)POWER({Column}, 3)base to the exponent power, as in base ^ exponent
ROUNDROUND(value, precision)ROUND({Column}, 3)Round input value to decimal place specified by precision (Nearest integer if precision not provided)
SQRTSQRT(value)SQRT({Column})Square root of the input parameter

Numeric Operators

OperatorSampleDescription
+{Column1} + {Column2} + 2Addition of numeric values
-{Column1} - {Column2}Subtraction of numeric values
*{Column1} * {Column2}Multiplication of numeric values
/{Column1} / {Column2}Division of numeric values
tip

To change the order of arithmetic operation, you can use round bracket parantheses ().
+Example: ({Column1} + ({Column2} * {Column3}) / (3 - $Column4$ ))

String Functions

NameSyntaxSampleOutput
CONCATCONCAT(str1, [str2,...])CONCAT({Column1}, ' ', {Column2})Concatenated string of input parameters
LEFTLEFT(str1, n)LEFT({Column}, 3)n characters from the beginning of input parameter
LENLEN(str)LEN({Column})Input parameter character length
LOWERLOWER(str)LOWER({Column})Lower case converted string of input parameter
MIDMID(str, position, [count])MID({Column}, 3, 2)Alias for SUBSTR
REPEATREPEAT(str, count)REPEAT({Column}, 2)Specified copies of the input parameter string concatenated together
REPLACEREPLACE(str, srchStr, rplcStr)REPLACE({Column}, 'int', 'num')String, after replacing all occurrences of srchStr with rplcStr
RIGHTRIGHT(str, n)RIGHT({Column}, 3)n characters from the end of input parameter
SEARCHSEARCH(str, srchStr)SEARCH({Column}, 'str')Index of srchStr specified if found, 0 otherwise
SUBSTRSUBTR(str, position, [count])SUBSTR({Column}, 3, 2)Substring of length 'count' of input string, from the postition specified
TRIMTRIM(str)TRIM({Column})Remove trailing and leading whitespaces from input parameter
UPPERUPPER(str)UPPER({Column})Upper case converted string of input parameter
URLURL(str)URL({Column})Convert to a hyperlink if it is a valid URL

Date Functions

NameSyntaxSampleOutputRemark
NOWNOW()NOW()2022-05-19 17:20:43Returns the current time and day
IF(NOW() < {DATE_COL}, "true", "false")IF(NOW() < date, "true", "false")If current date is less than {DATE_COL}, it returns true. Otherwise, it returns false.DateTime columns and negative values are supported.
DATEADDDATEADD(date \| datetime, value, ["day" \| "week" \| "month" \| "year"])DATEADD(date, 1, 'day')Supposing {DATE_COL} is 2022-03-14. The result is 2022-03-15.DateTime columns and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'day')
DATEADD(date, 1, 'week')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-03-21 03:14.DateTime columns and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'week')
DATEADD(date, 1, 'month')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-04-14 03:14.DateTime columns and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'month')
DATEADD(date, 1, 'year')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2023-03-14 03:14.DateTime columns and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'year')
IF(NOW() < DATEADD(date,10,'day'), "true", "false")If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false.DateTime columns and negative values are supported.
IF(NOW() < DATEADD(date,10,'day'), "true", "false")If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false.DateTime columns and negative values are supported.
DATETIME_DIFFDATETIME_DIFF(date, date, ["milliseconds" \| "ms" \| "seconds" \| "s" \| "minutes" \| "m" \| "hours" \| "h" \| "days" \| "d" \| "weeks" \| "w" \| "months" \| "M" \| "quarters" \| "Q" \| "years" \| "y"])DATETIME_DIFF("2022/10/14", "2022/10/15", "second")Supposing {DATE_COL_1} is 2017-08-25 and {DATE_COL_2} is 2011-08-25. The result is 86400.Compares two dates and returns the difference in the unit specified. Positive integers indicate the second date being in the past compared to the first and vice versa for negative ones.
WEEKDAY(NOW(), "sunday")If today is Monday, it returns 1Get the week day of NOW() with the first day set as sunday
WEEKDAYWEEKDAY(date, [startDayOfWeek])WEEKDAY(NOW())If today is Monday, it returns 0Returns the day of the week as an integer between 0 and 6 inclusive starting from Monday by default. You can optionally change the start day of the week by specifying in the second argument
WEEKDAY(NOW(), "sunday")If today is Monday, it returns 1Get the week day of NOW() with the first day set as sunday

Logical Operators

OperatorSampleDescription
<{Column1} < {Column2}Less than
>{Column1} > {Column2}Greater than
<={Column1} <= {Column2}Less than or equal to
>={Column1} >= {Column2}Greater than or equal to
=={Column1} == {Column2}Equal to
!={Column1} != {Column2}Not equal to

Conditional Expressions

NameSyntaxSampleOutput
IFIF(expr, successCase, elseCase)IF({Column} > 1, Value1, Value2)successCase if expr evaluates to TRUE, elseCase otherwise
SWITCHSWITCH(expr, [pattern, value, ..., default])SWITCH({Column}, 1, 'One', 2, 'Two', '--')Switch case value based on expr output
ANDAND(expr1, [expr2,...])AND({Column} > 2, {Column} < 10)TRUE if all expr evaluate to TRUE
OROR(expr1, [expr2,...])OR({Column} > 2, {Column} < 10)TRUE if at least one expr evaluates to TRUE

Logical operators, along with Numerical operators can be used to build conditional expressions.

Examples:

IF({marksSecured} > 80, "GradeA", "GradeB")  
SWITCH({quarterNumber},  
1, 'Jan-Mar',
2, 'Apr-Jun',
3, 'Jul-Sep',
4, 'Oct-Dec',
'INVALID'
)
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free/index.html new file mode 100644 index 0000000000..bf5da65e4a --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free/index.html @@ -0,0 +1,18 @@ + + + + + +Import Airtable to NocoDB | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Import Airtable to NocoDB

NocoDB allows a complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes.

note

Import from Airtable is in beta version. See Importing Airtable To NocoDB for the migration notes.

Get Airtable Credentials

note

You need to retrieve API key and Shared Base ID / URL from Airtable.

Retrieve API Key

Retrieve Share Base ID / URL

See here for detailed procedures.

  1. Open Share menu in your Project / Base +Screenshot 2022-05-16 at 3 47 27 PM

  2. Open tab Share Publicly

  3. Enable Turn on full base access

  4. Copy generated shared base URL +Screenshot 2022-05-16 at 3 41 54 PM

Import Airtable to NocoDB

note

Prerequisites:
- A NocoDB Project
- Airtable Credentials

Below are 3 simple steps

  1. Go to your Project, Open Add / Import menu and click Airtable.

Screenshot 2022-09-14 at 9 27 51 AM

  1. Input API key & Shared Base ID / URL (retrieved from Get Airtable Credentials above).
  • <1> API Key
  • <2> Share Base ID
  • <3> Configuration option
    • Import Data: disable this option to import only table & view schema's
    • Import Secondary Views: disable this option to import only primary grid view per table
    • Import Rollup Columns: disable this option to skip Rollup column import
    • Import Lookup Columns: disable this option to skip Lookup column import
    • Import Attachments Columns: disable this option to skip Attachment column import
    • \<Not supported yet> Import Formula Columns: disable this option to skip Formula (computation) column import

Screenshot 2022-09-14 at 9 30 14 AM

  1. Click Import and you will see the status
  2. Wait until Go To Dashboard button is activated on the modal. Import details are captured in log window.

Screenshot 2022-09-14 at 9 33 42 AM

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/keyboard-maneuver/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/keyboard-maneuver/index.html new file mode 100644 index 0000000000..ddce4b6722 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/keyboard-maneuver/index.html @@ -0,0 +1,16 @@ + + + + + +Keyboard Maneuver | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Keyboard Maneuver

Shortcuts

KeyBehaviour
ALT tInsert new table
ALT rInsert new row
ALT cInsert new column
ALT fToggle fullscreen mode
ALT iInvite a member to team
ALT ,Open Team & Settings menu

Grid view

KeyBehaviour
Jump to first record in this column (in same page)
Jump to last record in this column (in same page)
CCopy cell contents
EnterSwitch cell in focus to EDIT mode; opens modal/picker if cell is associated with one
EscExit cell EDIT mode
DeleteClear cell
SpaceExpand current row
General cell navigation
TabMove to next cell horizontally; if on last cell, move to next row beginning

Column type specific

DatatypeKeyBehaviour
Text / Numerical cells Move cursor to the left / right
Move cursor to the beginning / end
Single Select Move between options
EnterSelect option
Multi Select Move between options
EnterSelect / deselect option
DateTimeCtrl ;Select current date time
Link Move between options
EnterLink current selection
CheckboxEnterToggle
Rating<0 ~ Max>Enter number to toggle rating

Expanded form

KeyBehaviour
EnterSave current expanded form item
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/languages/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/languages/index.html new file mode 100644 index 0000000000..09f74da9b6 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/languages/index.html @@ -0,0 +1,16 @@ + + + + + +Languages | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Languages

NocoDB supports multiple lanuages on dashboard. By default, English will be used. However, if you prefer to display in other languages, you can do the following steps to change the language.

Open Project Menu (click on project name on left top to access Project menu)

image

and select the one you prefer.

If you want to help translate, please check out i18n. If you want to request a new language, please create an issue on Github.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/link-to-another-record/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/link-to-another-record/index.html new file mode 100644 index 0000000000..f808723d16 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/link-to-another-record/index.html @@ -0,0 +1,18 @@ + + + + + +Link To Another Record | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Link To Another Record

Relationship types:

  • One to one
    • A Table record in first table is related to only one record of second table.
    • Example: Country has a capital city
  • One to many
    • A Table record in first table is related to more than one record of second table. But second table record maps to only one entry of first table
    • NocoDB refers to this category of relationship as has many
    • For every has many relation defined, NocoDB augments belongs to relationship column in the other table automatically
    • Example: Country has many Cities. (other way mapping > City belongs to Country )
  • Many to many
    • A Table record in first table is related to more than one record of second table; second table record can also map to more than on record of first table.
    • NocoDB refers to this category of relationship as many to many
    • For every many to many relation defined between tables, NocoDB augments many to many relationship column in the other table automatically
    • Example: Film has many Actors. Actor has many Films (works on many films)

Further details of relationship types can be found here

Relationships between table records can be established by using LinkToAnotherRecord column type. +Workflow details are captured below

Adding a relationship

image

1. Create column

Click on '+' button at end of column headers

2. Update column name

Input name in the text box provided

3. Select column type

Select Column type as "LinkToAnotherRecord" from the drop-down menu

4. Choose relationship type

  • 'Has Many' corresponds to the 'One-to-many' relationships
  • 'Many To Many' corresponds to the 'Many-to-many' relationships

5. Select child table from drop down menu

6. Click on 'Save'

A new column will get created in both the parent table & child table

Updating linked records

Click on the '+' icon in corresponding row - cell

image

2. Select from the option displayed

Use 'Filter box' to narrow down on search items +You can opt to insert a new record as well, using "+ New Record" button

image

3. Column mapping showing "Has Many" relationship

Sheet1 'has many' Sheet2

image

4. Column mapping for "Belongs to" relationship [Automatically updated]

Sheet2 'belongs to' Sheet1

image
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/links/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/links/index.html new file mode 100644 index 0000000000..3109c026df --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/links/index.html @@ -0,0 +1,27 @@ + + + + + +Links | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Links

Supported relationship types:

  • One to many
    • A Table record in first table is related to more than one record of second table. But second table record maps to only one entry of first table
    • NocoDB refers to this category of relationship as has many
    • For every has many relation defined, NocoDB augments belongs to relationship column in the adjacent table automatically
    • Example: Country has many Cities. (other way mapping > City belongs to Country )
  • Many to many
    • A Table record in first table is related to more than one record of second table; second table record can also map to more than on record of first table.
    • NocoDB refers to this category of relationship as many to many
    • For every many to many relation defined between tables, NocoDB augments many to many relationship column in the other table automatically
    • Example: Film has many Actors. Actor has many Films (works on many films)

Further details of relationship types can be found here

From Release v0.111.0, table records can be connected through relationships using the Links column type. +It is important to note that, earlier supported column type LinkToAnotherRecord for creating relations is considered deprecated. While the old datatype is still supported for backward compatibility, it is no longer possible to create new fields of that type.

The main distinction between these two column types lies in how the contents are displayed within the cell when links are established between two tables. With the LinkToAnotherRecord column type, the cell displays the Primary value of the related records. On the other hand, the Links column type only shows the count of related records. +The decision to switch over to new column type was made to ensure better performance and scalability of the application, more so when the records & the number of records in the related table is large.

Child list to display the related records can be accessed by clicking on the link count displayed on the cell. +Except for the column type, the following procedures remain same as before

  • Create, update & delete a relationship column,
  • Link & unlink a record,
  • Create a lookup and rollup columns

Workflow details are captured below.

Adding a relationship

Screenshot 2023-06-27 at 11 03 20 AM

  1. Create column +Click on '+' button at end of column headers

  2. Update column name +Input name in the text box provided

  3. Select column type +Select Column type as "Links" from the drop-down menu

  4. Choose relationship type

  • 'Has Many' corresponds to the 'One-to-many' relationships
  • 'Many To Many' corresponds to the 'Many-to-many' relationships
  1. Select child table from drop down menu

  2. Click on 'Save' +A new column will get created in both the parent table & child table

Linking records

Click on the '+' icon in corresponding row - cell +Screenshot 2023-06-27 at 11 06 52 AM

2. Select from the option displayed

Use 'Filter box' to narrow down on search items.
+You can opt to insert a new record as well, using "+ New Record" button.
+You can use ALT + Click to insert multiple options together.

Screenshot 2023-06-27 at 11 08 40 AM

3. Column display for "Has Many" relationship

Country 'has many' City

Screenshot 2023-06-27 at 11 11 50 AM

4. Column display for "Belongs to" relationship [Automatically updated]

City 'belongs to' Country.
+Note: Primary value is still used as cell display value for "Belongs to" as it can have only one associated record.

Screenshot 2023-06-27 at 11 12 27 AM

Unlinking records

  1. Click on link count to open Child modal
  2. Click on Unlink icon against required item

Screenshot 2023-06-27 at 11 22 00 AM

Use column edit menu for Links to reconfigure display label

Screenshot 2023-06-27 at 11 16 19 AM

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/lookup/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/lookup/index.html new file mode 100644 index 0000000000..8bf6afc177 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/lookup/index.html @@ -0,0 +1,16 @@ + + + + + +Lookup | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Lookup

Lookup

Example organization structure

Consider an organization with

  • 5 departments (company departments), each department has a team name & associated team code. Each Team has many Employees - relationship has been defined using LinkToAnotherRecord or Linkscolumn
  • 5 employees working at different departments

Screenshot 2022-09-09 at 12 57 32 PM

Now, let's explore procedure to retrieve team-code information in Employee table using LOOKUP columns

Configuring a lookup column

1. Add new column : Click on '+' icon to the left of column headers in Employee table

2. Feed column name

3. Select column type as 'Lookup'

4. Choose child table

5. Select child column

6. Click on 'Save'

Screenshot 2022-09-09 at 12 21 13 PM

Required information is now populated in the newly created column

Screenshot 2022-09-09 at 12 26 06 PM

Additional notes

  • Nested 'Lookup' supported: a Lookup field can have its child column datatype as Lookup (or Rollup).
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/meta-management/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/meta-management/index.html new file mode 100644 index 0000000000..9c2a56b52a --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/meta-management/index.html @@ -0,0 +1,17 @@ + + + + + +Data Sources | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Data Sources

Overview

Data Sources sub-menu includes

  • Database Metadata
  • UI Access Control
  • ERD
  • Add/Remove new data source
  • Edit existing data source configuration
  • Edit data source visibility options

Note that, currently only one external data source can be added per project.

Accessing Data Sources

To access it, click the down arrow button next to Project Name on the top left side, then select Team & Settings and clicking Data Sources.

image

image

Sync Metadata

Go to Data Sources, click Sync Metadata, you can see your metadata sync status. If it is out of sync, you can sync the schema. See Sync Schema for more.

image

UI Access Control

Go to Data Sources, click UI ACL, you can control the access to each table by roles.

image

ERD

Go to Data Sources, click ERD, you can see the ERD of your database.

image

Junction table names within ERD

  • Enable Show M2M Tables within Project Settings menu
  • Double click on Show Columns to see additional checkboxes get enabled.
    • Enabling which you should be able to see junction tables and their table names.

image

Edit external database configuration parameters

Go to Data Sources, click Edit, you can re-configure database credentials.
+Please make sure database configuration parameters are valid. Any incorrect parameters could lead to schema loss!

image

Go to Data Sources, click Delete against the data source that you wish to un-link.

image

Data source visibility

Go to Data Sources, toggle Radio-button against the data source that you wish to hide/un-hide.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/primary-key/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/primary-key/index.html new file mode 100644 index 0000000000..b223ca5fc5 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/primary-key/index.html @@ -0,0 +1,17 @@ + + + + + +Primary Key | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Primary Key

What is a Primary Key ?

  • A primary key is a special database table column designated to uniquely identify each table record.

What is the use of Primary Key ?

  • As it uniquely identifies an individual record of a table, it is used internally by NocoDB for all operations associated with a record

Primary Key in NocoDB

  • Primary Key that gets defined / used in NocoDB depends on how underlying table was created. Summary is captured below
  1. From UI, Create new table / Import from Excel / Import from CSV
    1. An ID [datatype: Integer] system field created by default during table creation is used as primary key
    2. Additional system fields created-at, updated-at are inserted by default & can be omitted optionally; these fields can be deleted after table creation
  2. Connect to existing external database
    1. Existing primary key field defined for a table is retained as is; NocoDB doesn't insert a new ID field
    2. Additional system fields created-at, updated-at are not inserted by default
  3. Import from Airtable
    1. Airtable record ID is marked as primary key for imported records, and is mapped to field ncRecordId [datatype: varchar]
    2. If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB
    3. Computed hash value for the entire record is stored in system field ncRecordHash
    4. Additional system fields created-at, updated-at are not inserted by default
  4. Create new table using SDK / API
    1. No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute pk: true)

What if Primary Key was missing?

It is possible to have a table without any primary key.

  • External database table can be created without primary key configuration.
  • New table can be created using SDK / API without primary key +In such scenario's, new records can be created in NocoDB for this table, but records can't be updated or deleted [as there is now way for NocoDB to uniquely identify these records]

Example : Primary Key & optional system fields during new table creation

image

Example : Show System Fields

image

Can I change the Primary Key to another column within tables ?

  • You can't update Primary Key from NocoDB UI. You can reconfigure it at database level directly & trigger meta sync explicitly.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/project-settings/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/project-settings/index.html new file mode 100644 index 0000000000..88bd590cab --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/project-settings/index.html @@ -0,0 +1,16 @@ + + + + + +Project settings | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Project settings

Overview

Generic project configuration options are retained under Project Settings menu. To access it, click the down arrow button next to Project Name on the top left side, then select Team & Settings.

image

Then, under SETTINGS, click Project Settings.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/rollup/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/rollup/index.html new file mode 100644 index 0000000000..dc6e8fea68 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/rollup/index.html @@ -0,0 +1,16 @@ + + + + + +Rollup | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Rollup

Rollup

Sample Organization structure:

  • 5 Departments, each department has a team name & associated team code
  • 5 employees working at different Departments
  • Teams has many Employees : relationship has been defined

Screenshot 2022-09-09 at 12 57 32 PM

RollUp AGGREGATION functions supported

  • Count
  • Minimum
  • Maximum
  • Average
  • Sum
  • Count Distinct
  • Sum Distinct
  • Average Distinct

Now, we can explore how to extract employee count information per team using "ROLLUP" columns

Adding a rollup column

1. Add new column

Click on '+' icon to the left of column headers in Departments table

2. Feed column name

3. Select Column type as 'Rollup'

4. Choose Child Table

Table Employee in our example

5. Choose on ​Child column

Pick appropriate column for aggreagation

6. Select ​Aggregate function

Aggregate function will be "count" in our case

7. Click on Save

Screenshot 2022-09-09 at 1 03 49 PM

Column Employee Count is populated with appropriate information

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/share-base/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/share-base/index.html new file mode 100644 index 0000000000..4f419cab16 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/share-base/index.html @@ -0,0 +1,16 @@ + + + + + +Share Base | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Share Base

Generate Share base

  • Open Project
  • Click on Invite Team button on bottom left tool bar

image

  • Under Shared base link tab and toggle from Disabled Share base to Anyone with the link

image

  • Share base link generated is displayed over & can be used to share this project to others in the team [Selection (2) in the image below]

Screenshot 2022-02-19 at 12 01 58 PM

Modify Share base

Modifying Share base will invalidate the Share base link generated previously and will generate a new link.

  • Open Project base
  • Click on 'Share' button on top right tool bar
  • Click on 'Reload' button on Quick menu (next to Shared base link)

Disable Share base

Disabling Share base will invalidate the generated Share base link

  • Open Project base
  • Click on 'Share' button on top right tool bar
  • Under Shared base link and toggle from Anyone with the link to Disable Share base

Share base Access Permissions

Shared base can be configured as

  • Viewer - User with the link will get READ ONLY access to the project data.
  • Editor - User with the link will get READ & WRITE access to the project data.

Embeddable Frame

NocoDB interface can be embedded into existing applications easily by making use of HTML IFRAME) attribute.

Generate embeddable HTML code

  • Open Project base
  • Click on 'Share' button on top right tool bar
  • Under 'Shared base link' tab
    • Click on button to copy 'Embeddable HTML code'

Example:

<iframe
class="nc-embed"
src="https://nocodb-nocodb-rsyir.ondigitalocean.app/dashboard/#/nc/base/e3bba9df-4fc1-4d11-b7ce-41c4a3ad6810?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; border: 1px solid #ddd"
>
</iframe>

Embed into application's HTML Body

Sample code with embedded iframe generated above

<!DOCTYPE html>
<html>
<body>
<iframe
class="nc-embed"
src="http://localhost:3000/#/nc/base/7d4b551c-b5e0-41c9-a87b-f3984c21d2c7?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; "
></iframe>
</body>
</html>
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/share-view/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/share-view/index.html new file mode 100644 index 0000000000..266cc7f554 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/share-view/index.html @@ -0,0 +1,16 @@ + + + + + +Share View | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Share View

Generate Share View

  • Open a table or a view

  • Click Share View on the toolbar

image

  • Copy the link and share to someone

image

  • Optionally you can enable Use Theme to select the share view theme (Only Form View is supported currently)

image

  • or you can enable Restrict access with a password if you want a password-protected view

image

  • or you can Download allowed if you want the people with this link can download the data

image

Access Share View

  • Access the link. If it is password-protected, enter the password to unlock.

image

  • Otherwise, you should see the share view.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/sync-schema/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/sync-schema/index.html new file mode 100644 index 0000000000..904f0229a0 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/sync-schema/index.html @@ -0,0 +1,16 @@ + + + + + +Sync Schema | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Sync Schema

How to sync schema changes to NocoDB

NocoDB allows you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from one environment to other.

Below are the steps to sync schema changes.

1. From the Project menu, click Team & Settings

image

2. Click Data Source under SETTINGS, click Sync Metadata on the target base

image

image

3. Changes carried outside GUI, identified by NocoDB are listed under Sync state

  • If changes made to the database are not visible, click Reload
  • Identified schema changes are identified for each table in red
  • Sync now button gets activated, if Schema changes are identified by NocoDB

image

4. Click Sync Now to complete Schema sync procedure

Notes

  1. Column rename operation will be treated like column delete & column create operation.
  2. Only table schema changes identified will be listed under Sync state. Any changes to records are automatically synchronized.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/table-operations/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/table-operations/index.html new file mode 100644 index 0000000000..e11bb56818 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/table-operations/index.html @@ -0,0 +1,20 @@ + + + + + +Table Operations | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Table Operations

Once you have created a new NocoDB project you can open it, In the browser, the URL would be like example.com/#/default/<project_id>.

Table

Table Create

On project dashboard, click on Add new table button

table-create-button

Provide a name for the table & click Create Table button.

table-create-modal

After the successful submission, the table will be created and open on a new grid.

image

Table Rename

Right click on Table name on left hand project-tree menu, select Rename

image

In modal popup, enter new table name and click Submit button

image

Table Delete

Right click on Table name on left hand project-tree menu, select Delete

image

Click Yes to confirm the table deletion

image

Column

Column Add

Click the + icon on the right corner of the table.

image

After the click, it will show a menu and you can enter the column name and choose the column type. (See Column Types for the full list).

image

You can also click Show more for additional menu options.

Screenshot 2023-03-03 at 8 13 07 PM

Click Save button to create the new column.

image

Column Edit

To edit column properties, click the down arrow, select Edit from the menu.

imageYou will be able to edit column name & associated datatype using pop-up modal. You can also click `Show more` for additional menu options.image

Prior to v0.104.3, Advanced menu by default displayed developer specific database configuration options. To avoid unintended tweaks from user, these are now hidden under an easter egg menu. To enable, double click on show all/hide all button in column edit modal.

Screenshot 2023-03-06 at 10 45 26 AM

Column Delete

To delete a column, click the down arrow, select Delete from the menu.

image

Click Yes to confirm the column deletion.

image

Row

For adding new values to the table we need new rows, new rows can be added in two methods.

Row Add (Using Form)

  • Click the + icon in the toolbar of the table tab. image
  • Then you can enter the values and click Save row. image
  • After saving it will be there on your table. image

Row Add (Using Table Row at bottom of page)

  • Click the bottom row of the table + Add new row.image
  • A new empty row will be createdimage

Row Add (Pressing Enter Key from Previous Row)

When you finish editing a cell and press Enter, the cell in the next row with the same column will be highlighted.

image

Row Edit

You can start editing by any of the following methods

  • Double click on cell to edit
  • Click on cell and start typing (this way it will clear the previous content)
  • Click on cell and press enter to start editing
  • And it will automatically save on blur event or if inactive.

Row Delete

Right-click on anywhere in the row and then from the context menu select Delete Row option.

Bulk delete is also possible by selecting multiple rows by using the checkbox in first column and then Delete Selected Rows options from the right click context menu.

image

Quick Import

You can use Quick Import when you have data from external sources such as Airtable, CSV file or Microsoft Excel to an existing project by either

  • Hover Add new table button in table menu, click three dots, use Quick Import to create
  • Drag and drop CSV, JSON or Excel file to import
image

Import Airtable into an Existing Project

Import CSV data into an Existing Project

  • Hover Add new table button in table menu, click three dots, and click CSV file
  • Drag & drop or select files (at most 5 files) to upload or specify CSV file URL, and Click Import
    • Auto-Select Field Types: If it is checked, column types will be detected. Otherwise, it will default to SingleLineText.
    • Use First Row as Headers: If it is checked, the first row will be treated as header row.
    • Import Data: If it is checked, all data will be imported. Otherwise, only table will be created. +image
  • You can revise the table name by double-clicking it, column name and column type. By default, the first column will be chosen as Display Value and cannot be deleted. +image
  • Click Import to start importing process. The table will be created and the data will be imported. +image

Import Excel data into an Existing Project

  • Hover Add new table button in table menu, click three dots, and click Microsoft Excel
  • Drag & drop or select file (at most 1 file) to upload or specify Excel file URL and Click Import.
    • Auto-Select Field Types: If it is checked, column types will be detected. Otherwise, it will default to SingleLineText.
    • Use First Row as Headers: If it is checked, the first row will be treated as header row.
    • Import Data: If it is checked, all data will be imported. Otherwise, only table will be created. +image
  • You can revise the table name, column name and column type. By default, the first column will be chosen as Display Value and cannot be deleted.
note

If your Excel file contains multiple sheets, each sheet will be stored in a separate table.

image
  • Click Import to start importing process. The table(s) will be created and the data will be imported to the corresponding table(s).

    image

Export Data

You can export your data from a table as a CSV file by clicking the down arrow next to Table name and hover on Download. Currently only CSV and XLSX formats are supported for export.

image

Import Data

You can import your data in CSV format to a table by clicking the down arrow next to Table name and hover on Upload. Currently only CSV format is supported for upload.

image
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/team-and-auth/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/team-and-auth/index.html new file mode 100644 index 0000000000..93616019be --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/team-and-auth/index.html @@ -0,0 +1,16 @@ + + + + + +Team & Auth | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Team & Auth

Accessing Team & Auth

  • Click on Team & Settings from the Project Menu
  • Access Team & Auth under Settings
image

User Management

How to Add a User

  1. Go to Team & Auth, click on Invite Team

image

  1. Enter the user's E-mail. Select User Role, and Click Invite.
tip

You can add multiple comma (,) seperated emails

Screenshot 2022-09-13 at 10 54 39 AM

If you do not have an SMTP sender configured, make sure to copy the invite link and manually send it to your collaborator.

Screenshot 2022-09-13 at 10 54 22 AM

How to Update user permissions

  1. Use Edit <1> menu to assign a different role to existing user
  2. Use Delete <2> menu to remove a user from accessing current project

image


User Role Permissions

Advanced Options & Configurations

                                                       Owner        Creator        Editor    Commenter    Viewer    
Audit
App Store
Team & Auth
Project Metadata
New user: Add Owner
New user: Add Creator
New user: Add Editor
New user: Add Commenter
New user: Add Viewer
View existing users
Preview mode

Schema Options

                                                       Owner        Creator        Editor    Commenter    Viewer    
Add table
Delete table
Modify table
Add column
Delete column
Modify column

Record Options

                                                       Owner        Creator        Editor    Commenter    Viewer    
Add row
Delete row
Modify row/ cell
Expand row
Right click on cell (add/edit row)
View table data (cell) contents

Comments

                                                       Owner        Creator        Editor    Commenter    Viewer    
View comments from others
Add comments

Views

                                                       Owner        Creator        Editor    Commenter    Viewer    
Create new view
Share view

Project Generals

                                                       Owner        Creator        Editor    Commenter    Viewer    
Created views access
Filter fields/ Column
Filter fields/ Query
Sort fields
Theme
Auth token
Project Info
Swagger API

API Tokens Management

NocoDB allows creating API tokens which allow it to be integrated seamlessly with 3rd party apps. API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called xc-token.

  • Open Project Menu, click on Team & Settings
image
  • Click API Tokens Management tab under Team & Auth section

  • Click Add New Token

image

  • Type an recognizable name for your token and click Generate

Screenshot 2022-09-14 at 10 20 10 AM

  • Copy API token to your clipboard; use action menu to the right of token list
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/usage-information/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/usage-information/index.html new file mode 100644 index 0000000000..2137dc6deb --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/usage-information/index.html @@ -0,0 +1,21 @@ + + + + + +Usage Information | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Usage Information

NocoDB is a fast growing open source project which is UI heavy and we are committed to providing a solution that exceeds the expectations of the users and community. +We are also committed to continuing to develop and make NocoDB even better than it is today. +To that end, NocoDB contains a feature in which anonymous and otherwise non-sensitive data is collected. +This anonymous and non-sensitive data gives a better understanding of how users are interacting and using the product.

Context

We will always continue to do hands-on UI/UX testing, surveys, issue tracking and roadmap. +Otherwise talk with the Community while striving to understand +and deliver what is being asked for and what is needed, by any means available.

However, these above actions alone are often insufficient

  • To maintain an overall picture of the product usage.
  • Prioritising the efforts.
  • Impact of any breaking changes.
  • To understand whether UI improvements are helpful to users.

What we collect ?

We collect actions made on models (project, table, view, sharedView, user, hook, image, sharedBase etc) periodically with :

  • System information (OS, node version, docker or npm)
  • Environment (dev, staging, production)
  • Instance information (Unique machine ID, database type, count of projects and users)
  • Failures.

Our UI Dashboard is a Vuejs-Nuxtjs app. Actions taken on UI with completely anonymized route names are sent as payload.

What we DO NOT collect ?

We do not collect any private or sensitive information, such as:

  • Personally identifiable information
  • Credential information (endpoints, ports, DB connections, username/password)
  • Database/User data

Opt-out

To disable usage information collection please set following environment variable.

NC_DISABLE_TELE=true

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/0.109.7/setup-and-usages/views/index.html b/packages/noco-docs/dist/0.109.7/setup-and-usages/views/index.html new file mode 100644 index 0000000000..f712142030 --- /dev/null +++ b/packages/noco-docs/dist/0.109.7/setup-and-usages/views/index.html @@ -0,0 +1,16 @@ + + + + + +Views | NocoDB + + + + +
+
Skip to main content
Version: 0.109.7 - Old UI

Views

What's a View?

In a table, you can use different views to display your data. You can show specific fields in a View. You can also apply Sorting or Filtering to the View. Each View is independent, which means the configuration applying to View 1 will not apply to View 2.

To navigate different views, we can select the target one in the view sidebar. By default, Grid View will be created for you after creating the table. You can create multiple views of a type, as long as they have unique View names.

View Menu Bar

To work with Views, use View menu-bar on the right hand side -

  • <1> Toggle View menu-bar.
  • <2> Displays created view-list for the selected table
    • Currently active view is high-lighted
  • <3> Add new view to the list

image

View Types

Grid View

Grid View, as a default type of view, allows you to display your data in a spreadsheet-like interface.

1010-2 Grid

Form View

Form View allows you to arrange fields in a form to input data.

1010-2 Form

You can drag-drop columns from the form to form-field-menu-bar as requried.

Gallery View allows you to display images as thumbnails with other fields just like a gallery.

1010-2 Gallery

Kanban View

Kanban View allows you to visualise your data using cards at various stacks.

1010-2 Kanban

View Permission Types

We can apply permission to each View. By default, Collaborative Views will be used. To see or change the view type, expand view-tool-bar-menu as shown below.

Screenshot 2022-09-09 at 3 46 33 PM

Collaborative Views (default)

  • Collaborators with edit permissions or higher can change the view configurations

Locked Views

  • No one can edit view configurations until it is Unlocked
  • All collaborators can only READ data from such views

Personal Views

  • Only you can edit the view configuration.
  • Your personal views are hidden for other collaborators
  • Are not available currently; will be enabled in future release

View Operations

Screenshot 2022-09-09 at 3 27 46 PM

Create a View

Click '+' in View-menu sidebar, as shown in <3>.

Rename a View

Double click on view-name, edit, .

Delete a View

Hover the target View and click the delete icon, as shown in <2>.

note

You cannot delete the very first Grid View (termed as Default view).

Duplicate a View

Hover the target View and click the copy icon, as shown in <2>.

Reorder a View

Hover the target View and re-order it as needed by drag-drop the drag icon, as shown in <1>.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/404.html b/packages/noco-docs/dist/404.html new file mode 100644 index 0000000000..78e6833108 --- /dev/null +++ b/packages/noco-docs/dist/404.html @@ -0,0 +1,16 @@ + + + + + +Page Not Found | NocoDB + + + + +
+
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/FAQs/index.html b/packages/noco-docs/dist/FAQs/index.html new file mode 100644 index 0000000000..f8ba9c6033 --- /dev/null +++ b/packages/noco-docs/dist/FAQs/index.html @@ -0,0 +1,18 @@ + + + + + +FAQs | NocoDB + + + + +
+
Skip to main content
Version: Latest

FAQs

How to upgrade NocoDB ?

How to export CSV from the grid view ?

How to share the project with read only access ?

  • Either you can invite by email with 'viewer' access control
  • Share the base with publicly accessible link. Available since 0.82.0

How to check my Project info ?

  • You can open Project context menu and click Copy Project Info.

image

You should see the similar result as below.

Node: **v18.16.4**
Arch: **arm64**
Platform: **linux**
Docker: **true**
RootDB: **sqlite3**
PackageVersion: **0.111.0**

What is available in free version ?

  • Detailed comparison of NocoDB's generous CE compared to others is here.
  • NocoDB has just one version that is free & open source.
  • In it you will notice advanced features are all available for free.
    • ACL
    • Collaboration
    • Advanced Views : Form View, Gallery View & Kanban View
    • Share View
    • Embed View
    • Password protected View
    • Automations
    • API Token Support
  • And we would never move these features from free to an enterprise version of NocoDB.
  • There is no limitations to number of projects, records or fields either.

What is the difference between Auth Token and API Token ?

Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable NC_JWT_EXPIRES_IN. If you are passing Auth Token, make sure that the header is called xc-auth.

API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called xc-token.

Do we plan to have an Enterprise Edition?

For features that make sense for enterprises like below - yes

  • SSO, SLA, Organisation wide reports and analytics,
  • Advanced Audit or ACL,
  • Bespoke implementations & integrations,
  • A hosted solution. +

And increasing number of our customers are requesting it.

How do we decide if a feature is Enterprise or not ?

  • Depends on the effort and whether the intended users are enterprises.

What are the official socials for NocoDB?

Is NocoDB available on the cloud?

Soon! NocoDB is currently developing cloud infrastructure. +To join the upcoming FREE private beta program, fill out this form here and be the first to try it!

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/account-settings/api-tokens/index.html b/packages/noco-docs/dist/account-settings/api-tokens/index.html new file mode 100644 index 0000000000..13e2013079 --- /dev/null +++ b/packages/noco-docs/dist/account-settings/api-tokens/index.html @@ -0,0 +1,16 @@ + + + + + +API tokens | NocoDB + + + + +
+
Skip to main content
Version: Latest

API tokens

Create API Token

Open Account Settings page from the user menu in the bottom left corner of the sidebar.

  1. Click on User menu in the bottom left corner of the sidebar,
  2. Select Account Settings from the dropdown

profile page

Follow the steps below to create API Token

  1. Click on Tokens tab in the Account Settings page
  2. Click on Add New API Token
  3. Enter the name for the API Token
  4. Click on Save button to save the changes

Create API Token

Create API Token

danger

Only one token can be created per user

API Token created will get added to the list. Copy API token by clicking on Copy button displayed under Actions menu

Create API Token

Delete API Token

Open Account Settings page from the user menu in the bottom left corner of the sidebar.

  1. Click on User menu in the bottom left corner of the sidebar,
  2. Select Account Settings from the dropdown

profile page

  1. Click on Tokens tab in the Account Settings page
  2. From the Actions menu, click on Delete button associated with the API Token to be deleted

Delete API Token

danger

Note that, all the services using the API Token will stop working once the API Token is deleted.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/account-settings/oss-specific-details/index.html b/packages/noco-docs/dist/account-settings/oss-specific-details/index.html new file mode 100644 index 0000000000..cb76a7b6ab --- /dev/null +++ b/packages/noco-docs/dist/account-settings/oss-specific-details/index.html @@ -0,0 +1,17 @@ + + + + + +In Open Source | NocoDB + + + + +
+
Skip to main content
Version: Latest

In Open Source

Some of the Account settings features are available only in Open Source NocoDB. This article explains details about such specifics.

Enable / Disable Signup

Signup without an invitation is disabled by default and can be managed from UI by a super admin.

Invite only signup

App Store

App store lists available integrations for NocoDB. You can install and configure these integrations from the App store.

Screenshot 2023-08-22 at 5 02 26 PM +We provide different integrations in three main categories.

CategoryApp Name
ChatMicrosoft Teams
Discord
Twilio
Whatsapp Twilio
Mattermost
Slack
EmailSMTP
MailerSend
AWS SES
StorageAWS S3
Minio
Google Cloud Storage
Spaces
Backblaze B2
Vultr Object Storage
OvhCloud Object Storage
Linode Object Storage
UpCloud Object Storage
Scaleway Object Storage
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/account-settings/profile-page/index.html b/packages/noco-docs/dist/account-settings/profile-page/index.html new file mode 100644 index 0000000000..ad4f309898 --- /dev/null +++ b/packages/noco-docs/dist/account-settings/profile-page/index.html @@ -0,0 +1,16 @@ + + + + + +Profile page | NocoDB + + + + +
+
Skip to main content
Version: Latest

Profile page

Profile page is the place where you can manage your profile information. Currently, only a custom username can be setup as part of profile configuration. To access your profile page,

  1. Click on User menu in the bottom left corner of the sidebar,
  2. Select Account Settings from the dropdown
  3. Change Profile name
  4. Click on Save button to save the changes

profile page

profile page

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/css/styles.ce2b6fcc.css b/packages/noco-docs/dist/assets/css/styles.ce2b6fcc.css new file mode 100644 index 0000000000..dee9b64c63 --- /dev/null +++ b/packages/noco-docs/dist/assets/css/styles.ce2b6fcc.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}[data-theme=dark] .DocSearch,[data-theme=light] .DocSearch{--docsearch-muted-color:var(--ifm-color-secondary-darkest);--docsearch-hit-color:var(--ifm-font-color-base);--docsearch-hit-active-color:var(--ifm-color-white)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#3498db;--ifm-color-primary-dark:#2980b9;--ifm-color-primary-darker:#2471a3;--ifm-color-primary-darkest:#1f618d;--ifm-color-primary-light:#5fa8d0;--ifm-color-primary-lighter:#76b9e0;--ifm-color-primary-lightest:#a5d8ff;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#1035bc;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#1035bc;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px #1e235a66;--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.header-github-link:hover,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;content:"";display:flex;height:24px;width:24px}.navbar__logo{height:3rem}html[data-theme=dark] .header-github-link:hover{opacity:.6}html[data-theme=dark] .header-github-link:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat}[data-theme=dark]{--ifm-color-primary:#258cc2;--ifm-color-primary-dark:#2074a0;--ifm-color-primary-darker:#1d6a8e;--ifm-color-primary-darkest:#1a5779;--ifm-color-primary-light:#29a7d5;--ifm-color-primary-lighter:#32b9e1;--ifm-color-primary-lightest:#4fcbe9;--docusaurus-highlighted-code-line-bg:#0000004d}.markdown img{box-shadow:0 0 10px #000000bf}[data-theme=light] .DocSearch{--docsearch-container-background:#5e6470b3;--docsearch-modal-background:var(--ifm-color-secondary-lighter);--docsearch-searchbox-background:var(--ifm-color-secondary);--docsearch-searchbox-focus-background:var(--ifm-color-white);--docsearch-hit-background:var(--ifm-color-white);--docsearch-footer-background:var(--ifm-color-white)}[data-theme=dark] .DocSearch{--docsearch-text-color:var(--ifm-font-color-base);--docsearch-container-background:#2f3745b3;--docsearch-modal-background:var(--ifm-background-color);--docsearch-searchbox-background:var(--ifm-background-color);--docsearch-searchbox-focus-background:var(--ifm-color-black);--docsearch-hit-background:var(--ifm-color-emphasis-100);--docsearch-footer-background:var(--ifm-background-surface-color);--docsearch-key-gradient:linear-gradient(-26.5deg,var(--ifm-color-emphasis-200) 0%,var(--ifm-color-emphasis-100) 100%)}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus-base-url-issue-banner-container,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.DocSearch-Container a,.tag_zVej:hover{text-decoration:none}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.containsTaskList_mC6p{list-style:none}.img_ev3q{height:auto}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.searchQueryInput_tAtn,.searchVersionInput_pEIW{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_tAtn:focus,.searchVersionInput_pEIW:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_tAtn::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_EPg1{font-size:.9rem;font-weight:700}.algoliaLogo_v0Zm{max-width:150px}.algoliaLogoPathFill_Wcie{fill:var(--ifm-font-color-base)}.searchResultItem_tk59{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_SlUl{font-weight:400;margin-bottom:0}.searchResultItemPath_F356{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_Csqe{font-style:italic;margin:.5rem 0 0}.loadingSpinner_NGMR{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes a{to{transform:rotate(1turn)}}.loader_Dnz0{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docSidebarContainer_b6E3,.sidebarLogo_isFc{display:none}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}@media screen and (min-width:768px){.DocSearch.DocSearch-Button{left:50%;position:fixed;top:12px;transform:translateX(-50%);width:200px}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_dnRM,.searchResultsColumn_EPg1{max-width:60%!important}.searchLogoColumn_wQ1C,.searchVersionColumn_LFf5{max-width:40%!important}.searchLogoColumn_wQ1C{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media screen and (max-width:576px){.searchQueryColumn_dnRM{max-width:100%!important}.searchVersionColumn_LFf5{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/images/JSON-11cd3835058fadbd8e0bd98d8dd1fc50.png b/packages/noco-docs/dist/assets/images/JSON-11cd3835058fadbd8e0bd98d8dd1fc50.png new file mode 100644 index 0000000000..27295fa3a0 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/JSON-11cd3835058fadbd8e0bd98d8dd1fc50.png differ diff --git a/packages/noco-docs/dist/assets/images/QR-46ddd7cfc009771eb6af72acb0e6124e.png b/packages/noco-docs/dist/assets/images/QR-46ddd7cfc009771eb6af72acb0e6124e.png new file mode 100644 index 0000000000..62414db68d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/QR-46ddd7cfc009771eb6af72acb0e6124e.png differ diff --git a/packages/noco-docs/dist/assets/images/account-settings-3f8b281c933be2349ddb19f0fa8660e8.png b/packages/noco-docs/dist/assets/images/account-settings-3f8b281c933be2349ddb19f0fa8660e8.png new file mode 100644 index 0000000000..77b8df391f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/account-settings-3f8b281c933be2349ddb19f0fa8660e8.png differ diff --git a/packages/noco-docs/dist/assets/images/add-link-modal-fde55380d59bdd5d597bd38e3330dbbd.png b/packages/noco-docs/dist/assets/images/add-link-modal-fde55380d59bdd5d597bd38e3330dbbd.png new file mode 100644 index 0000000000..eed317543b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/add-link-modal-fde55380d59bdd5d597bd38e3330dbbd.png differ diff --git a/packages/noco-docs/dist/assets/images/airtable-api-key-877ce3d40ba4f18389ceede7c4fa50bb.png b/packages/noco-docs/dist/assets/images/airtable-api-key-877ce3d40ba4f18389ceede7c4fa50bb.png new file mode 100644 index 0000000000..eed641ad87 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/airtable-api-key-877ce3d40ba4f18389ceede7c4fa50bb.png differ diff --git a/packages/noco-docs/dist/assets/images/airtable-share-base-c48341713680e60f512768432df19fec.png b/packages/noco-docs/dist/assets/images/airtable-share-base-c48341713680e60f512768432df19fec.png new file mode 100644 index 0000000000..fe250b7ca2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/airtable-share-base-c48341713680e60f512768432df19fec.png differ diff --git a/packages/noco-docs/dist/assets/images/api-token-1-6806c5ece8a92717e786e0fa4e824081.png b/packages/noco-docs/dist/assets/images/api-token-1-6806c5ece8a92717e786e0fa4e824081.png new file mode 100644 index 0000000000..0ce6938614 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/api-token-1-6806c5ece8a92717e786e0fa4e824081.png differ diff --git a/packages/noco-docs/dist/assets/images/api-token-2-378e04140d53a68be86d17d3561c8591.png b/packages/noco-docs/dist/assets/images/api-token-2-378e04140d53a68be86d17d3561c8591.png new file mode 100644 index 0000000000..0a9d355d1d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/api-token-2-378e04140d53a68be86d17d3561c8591.png differ diff --git a/packages/noco-docs/dist/assets/images/api-token-3-493d6baa74b64ec5d6a00c20d6806fd4.png b/packages/noco-docs/dist/assets/images/api-token-3-493d6baa74b64ec5d6a00c20d6806fd4.png new file mode 100644 index 0000000000..78b8a42be6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/api-token-3-493d6baa74b64ec5d6a00c20d6806fd4.png differ diff --git a/packages/noco-docs/dist/assets/images/api-token-4-1a6120f496ccdfca799987a4dc8f9027.png b/packages/noco-docs/dist/assets/images/api-token-4-1a6120f496ccdfca799987a4dc8f9027.png new file mode 100644 index 0000000000..a36c1ae8aa Binary files /dev/null and b/packages/noco-docs/dist/assets/images/api-token-4-1a6120f496ccdfca799987a4dc8f9027.png differ diff --git a/packages/noco-docs/dist/assets/images/attachment-68efc9fbeb85c49731a9d441cd90bda8.png b/packages/noco-docs/dist/assets/images/attachment-68efc9fbeb85c49731a9d441cd90bda8.png new file mode 100644 index 0000000000..21ecee56f2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/attachment-68efc9fbeb85c49731a9d441cd90bda8.png differ diff --git a/packages/noco-docs/dist/assets/images/attachment-cell-63aeff518251334ef9ebdd018c752b1b.png b/packages/noco-docs/dist/assets/images/attachment-cell-63aeff518251334ef9ebdd018c752b1b.png new file mode 100644 index 0000000000..ed7c6e68a2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/attachment-cell-63aeff518251334ef9ebdd018c752b1b.png differ diff --git a/packages/noco-docs/dist/assets/images/attachment-cell-display-d0e036b051275db64f5a516ad8c604b5.png b/packages/noco-docs/dist/assets/images/attachment-cell-display-d0e036b051275db64f5a516ad8c604b5.png new file mode 100644 index 0000000000..801d391e63 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/attachment-cell-display-d0e036b051275db64f5a516ad8c604b5.png differ diff --git a/packages/noco-docs/dist/assets/images/attachment-expand-bf0a44f3b002a3efa120b55211ac4d3c.png b/packages/noco-docs/dist/assets/images/attachment-expand-bf0a44f3b002a3efa120b55211ac4d3c.png new file mode 100644 index 0000000000..7d39aa05db Binary files /dev/null and b/packages/noco-docs/dist/assets/images/attachment-expand-bf0a44f3b002a3efa120b55211ac4d3c.png differ diff --git a/packages/noco-docs/dist/assets/images/audit-8486b02fd5d59268886ab05c697bd747.png b/packages/noco-docs/dist/assets/images/audit-8486b02fd5d59268886ab05c697bd747.png new file mode 100644 index 0000000000..4634d489db Binary files /dev/null and b/packages/noco-docs/dist/assets/images/audit-8486b02fd5d59268886ab05c697bd747.png differ diff --git a/packages/noco-docs/dist/assets/images/audit-logs-c781137e1b06c22923d2da20ca02fcf0.png b/packages/noco-docs/dist/assets/images/audit-logs-c781137e1b06c22923d2da20ca02fcf0.png new file mode 100644 index 0000000000..0d23ca1933 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/audit-logs-c781137e1b06c22923d2da20ca02fcf0.png differ diff --git a/packages/noco-docs/dist/assets/images/banner-0a7a485798fc16881259280a1227725d.png b/packages/noco-docs/dist/assets/images/banner-0a7a485798fc16881259280a1227725d.png new file mode 100644 index 0000000000..27d7254d52 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/banner-0a7a485798fc16881259280a1227725d.png differ diff --git a/packages/noco-docs/dist/assets/images/barcode-a4164f41826b6ad850b8672d09f0457c.png b/packages/noco-docs/dist/assets/images/barcode-a4164f41826b6ad850b8672d09f0457c.png new file mode 100644 index 0000000000..fba526caac Binary files /dev/null and b/packages/noco-docs/dist/assets/images/barcode-a4164f41826b6ad850b8672d09f0457c.png differ diff --git a/packages/noco-docs/dist/assets/images/barcode-cell-5e6612ed1460a61d5e51629f7b068d35.png b/packages/noco-docs/dist/assets/images/barcode-cell-5e6612ed1460a61d5e51629f7b068d35.png new file mode 100644 index 0000000000..fbb3c59ed9 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/barcode-cell-5e6612ed1460a61d5e51629f7b068d35.png differ diff --git a/packages/noco-docs/dist/assets/images/barcode-expand-29f49619f7b7dd014841681482c8a8af.png b/packages/noco-docs/dist/assets/images/barcode-expand-29f49619f7b7dd014841681482c8a8af.png new file mode 100644 index 0000000000..b10ba5704a Binary files /dev/null and b/packages/noco-docs/dist/assets/images/barcode-expand-29f49619f7b7dd014841681482c8a8af.png differ diff --git a/packages/noco-docs/dist/assets/images/base-collaboration-7c992951b09e76dec15cd8d15c04fece.png b/packages/noco-docs/dist/assets/images/base-collaboration-7c992951b09e76dec15cd8d15c04fece.png new file mode 100644 index 0000000000..bfc9bd262f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-collaboration-7c992951b09e76dec15cd8d15c04fece.png differ diff --git a/packages/noco-docs/dist/assets/images/base-context-menu-8cdc9e3b6c6f450d66cb324e8ea1feea.png b/packages/noco-docs/dist/assets/images/base-context-menu-8cdc9e3b6c6f450d66cb324e8ea1feea.png new file mode 100644 index 0000000000..6d9102ee53 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-context-menu-8cdc9e3b6c6f450d66cb324e8ea1feea.png differ diff --git a/packages/noco-docs/dist/assets/images/base-create-1-c677c7eef550784eeafc201d4b92cf24.png b/packages/noco-docs/dist/assets/images/base-create-1-c677c7eef550784eeafc201d4b92cf24.png new file mode 100644 index 0000000000..88e625b741 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-create-1-c677c7eef550784eeafc201d4b92cf24.png differ diff --git a/packages/noco-docs/dist/assets/images/base-create-2-d26dbc197203d898f5cc7db86df26aea.png b/packages/noco-docs/dist/assets/images/base-create-2-d26dbc197203d898f5cc7db86df26aea.png new file mode 100644 index 0000000000..5119546d7f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-create-2-d26dbc197203d898f5cc7db86df26aea.png differ diff --git a/packages/noco-docs/dist/assets/images/base-dashboard-1c778031a554f46f75392fc786212606.png b/packages/noco-docs/dist/assets/images/base-dashboard-1c778031a554f46f75392fc786212606.png new file mode 100644 index 0000000000..201cff79a5 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-dashboard-1c778031a554f46f75392fc786212606.png differ diff --git a/packages/noco-docs/dist/assets/images/base-delete-15390ff1d15eddee39ea1ea63f72a6af.png b/packages/noco-docs/dist/assets/images/base-delete-15390ff1d15eddee39ea1ea63f72a6af.png new file mode 100644 index 0000000000..5349a52ccf Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-delete-15390ff1d15eddee39ea1ea63f72a6af.png differ diff --git a/packages/noco-docs/dist/assets/images/base-duplicate-88ebe6a5fcc9c36b5f7d76b65726d9b5.png b/packages/noco-docs/dist/assets/images/base-duplicate-88ebe6a5fcc9c36b5f7d76b65726d9b5.png new file mode 100644 index 0000000000..0624664d6b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-duplicate-88ebe6a5fcc9c36b5f7d76b65726d9b5.png differ diff --git a/packages/noco-docs/dist/assets/images/base-import-airtable-1-3370c224db06eadddda7dd6224076af1.png b/packages/noco-docs/dist/assets/images/base-import-airtable-1-3370c224db06eadddda7dd6224076af1.png new file mode 100644 index 0000000000..cbcccdd982 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-import-airtable-1-3370c224db06eadddda7dd6224076af1.png differ diff --git a/packages/noco-docs/dist/assets/images/base-import-airtable-2-a758f2600b298ba29594cfb8da91e1a2.png b/packages/noco-docs/dist/assets/images/base-import-airtable-2-a758f2600b298ba29594cfb8da91e1a2.png new file mode 100644 index 0000000000..19a4e3c5d4 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-import-airtable-2-a758f2600b298ba29594cfb8da91e1a2.png differ diff --git a/packages/noco-docs/dist/assets/images/base-import-airtable-3-ff5f7ad98f229f0fcd630c0eea1432d6.png b/packages/noco-docs/dist/assets/images/base-import-airtable-3-ff5f7ad98f229f0fcd630c0eea1432d6.png new file mode 100644 index 0000000000..b8d6f36e7b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-import-airtable-3-ff5f7ad98f229f0fcd630c0eea1432d6.png differ diff --git a/packages/noco-docs/dist/assets/images/base-import-from-dashboard-1-0ccc1e3e8508c11049dd45647d6c0f91.png b/packages/noco-docs/dist/assets/images/base-import-from-dashboard-1-0ccc1e3e8508c11049dd45647d6c0f91.png new file mode 100644 index 0000000000..7d066c0578 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-import-from-dashboard-1-0ccc1e3e8508c11049dd45647d6c0f91.png differ diff --git a/packages/noco-docs/dist/assets/images/base-import-from-dashboard-2-d10a91e0ec28bbe4c620cdc5d4e871d6.png b/packages/noco-docs/dist/assets/images/base-import-from-dashboard-2-d10a91e0ec28bbe4c620cdc5d4e871d6.png new file mode 100644 index 0000000000..f824e21d6d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-import-from-dashboard-2-d10a91e0ec28bbe4c620cdc5d4e871d6.png differ diff --git a/packages/noco-docs/dist/assets/images/base-relations-aaa09c0623353f552c7b90a8aa6beacb.png b/packages/noco-docs/dist/assets/images/base-relations-aaa09c0623353f552c7b90a8aa6beacb.png new file mode 100644 index 0000000000..9f8e4d8329 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-relations-aaa09c0623353f552c7b90a8aa6beacb.png differ diff --git a/packages/noco-docs/dist/assets/images/base-remove-from-starred-a5fc6ed9e9cbc2251844fc0cd8afba24.png b/packages/noco-docs/dist/assets/images/base-remove-from-starred-a5fc6ed9e9cbc2251844fc0cd8afba24.png new file mode 100644 index 0000000000..e330aee3d0 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-remove-from-starred-a5fc6ed9e9cbc2251844fc0cd8afba24.png differ diff --git a/packages/noco-docs/dist/assets/images/base-rename-027fd5fbcdca058a00c8213c263d1836.png b/packages/noco-docs/dist/assets/images/base-rename-027fd5fbcdca058a00c8213c263d1836.png new file mode 100644 index 0000000000..979a7a138f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-rename-027fd5fbcdca058a00c8213c263d1836.png differ diff --git a/packages/noco-docs/dist/assets/images/base-settings-194c9bb15d79c76f4bfea5746a077125.png b/packages/noco-docs/dist/assets/images/base-settings-194c9bb15d79c76f4bfea5746a077125.png new file mode 100644 index 0000000000..f680e73e6f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-settings-194c9bb15d79c76f4bfea5746a077125.png differ diff --git a/packages/noco-docs/dist/assets/images/base-starred-082719a6b8a527be8b23a2d511867ccd.png b/packages/noco-docs/dist/assets/images/base-starred-082719a6b8a527be8b23a2d511867ccd.png new file mode 100644 index 0000000000..e09d635f23 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-starred-082719a6b8a527be8b23a2d511867ccd.png differ diff --git a/packages/noco-docs/dist/assets/images/base-swagger-66b41d2cd5d5e0a8f51ff026b6cfab85.png b/packages/noco-docs/dist/assets/images/base-swagger-66b41d2cd5d5e0a8f51ff026b6cfab85.png new file mode 100644 index 0000000000..c719c68bc8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/base-swagger-66b41d2cd5d5e0a8f51ff026b6cfab85.png differ diff --git a/packages/noco-docs/dist/assets/images/bulk-update-1-abf0bea8ffcee3689a6b4c7bc912a92b.png b/packages/noco-docs/dist/assets/images/bulk-update-1-abf0bea8ffcee3689a6b4c7bc912a92b.png new file mode 100644 index 0000000000..3d621bf5e7 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/bulk-update-1-abf0bea8ffcee3689a6b4c7bc912a92b.png differ diff --git a/packages/noco-docs/dist/assets/images/bulk-update-2-8ad8314489b9cb76d57cdddddcf2ab85.png b/packages/noco-docs/dist/assets/images/bulk-update-2-8ad8314489b9cb76d57cdddddcf2ab85.png new file mode 100644 index 0000000000..5488ea8c0a Binary files /dev/null and b/packages/noco-docs/dist/assets/images/bulk-update-2-8ad8314489b9cb76d57cdddddcf2ab85.png differ diff --git a/packages/noco-docs/dist/assets/images/bulk-update-3-e8c66d72a7fdbe1247482ba2021aa0f5.png b/packages/noco-docs/dist/assets/images/bulk-update-3-e8c66d72a7fdbe1247482ba2021aa0f5.png new file mode 100644 index 0000000000..93e107ef2b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/bulk-update-3-e8c66d72a7fdbe1247482ba2021aa0f5.png differ diff --git a/packages/noco-docs/dist/assets/images/change-cover-image-ab1e220f3d9f8ccba648546c2f0e9b22.png b/packages/noco-docs/dist/assets/images/change-cover-image-ab1e220f3d9f8ccba648546c2f0e9b22.png new file mode 100644 index 0000000000..03ef3ae2ef Binary files /dev/null and b/packages/noco-docs/dist/assets/images/change-cover-image-ab1e220f3d9f8ccba648546c2f0e9b22.png differ diff --git a/packages/noco-docs/dist/assets/images/checkbox-d62bbc732b50b8328ce528b7a9496cee.png b/packages/noco-docs/dist/assets/images/checkbox-d62bbc732b50b8328ce528b7a9496cee.png new file mode 100644 index 0000000000..65f833fdad Binary files /dev/null and b/packages/noco-docs/dist/assets/images/checkbox-d62bbc732b50b8328ce528b7a9496cee.png differ diff --git a/packages/noco-docs/dist/assets/images/checkbox-icon-50a0b9c5edbae35ca181d433419c943c.png b/packages/noco-docs/dist/assets/images/checkbox-icon-50a0b9c5edbae35ca181d433419c943c.png new file mode 100644 index 0000000000..181bf72035 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/checkbox-icon-50a0b9c5edbae35ca181d433419c943c.png differ diff --git a/packages/noco-docs/dist/assets/images/cmd-j-267d51c21c4e2eff6b1b92fbf33910ff.png b/packages/noco-docs/dist/assets/images/cmd-j-267d51c21c4e2eff6b1b92fbf33910ff.png new file mode 100644 index 0000000000..bfa8c11a35 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/cmd-j-267d51c21c4e2eff6b1b92fbf33910ff.png differ diff --git a/packages/noco-docs/dist/assets/images/cmd-k-1f005c4c3352fd997c5f7861a8c8d503.png b/packages/noco-docs/dist/assets/images/cmd-k-1f005c4c3352fd997c5f7861a8c8d503.png new file mode 100644 index 0000000000..b2f9076083 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/cmd-k-1f005c4c3352fd997c5f7861a8c8d503.png differ diff --git a/packages/noco-docs/dist/assets/images/cmd-l-d77ac9514673c96a734aed572ec2d636.png b/packages/noco-docs/dist/assets/images/cmd-l-d77ac9514673c96a734aed572ec2d636.png new file mode 100644 index 0000000000..ad86b312bf Binary files /dev/null and b/packages/noco-docs/dist/assets/images/cmd-l-d77ac9514673c96a734aed572ec2d636.png differ diff --git a/packages/noco-docs/dist/assets/images/copy-proj-info-f059b5a1330cd599d89ba88d6714883c.png b/packages/noco-docs/dist/assets/images/copy-proj-info-f059b5a1330cd599d89ba88d6714883c.png new file mode 100644 index 0000000000..608db0fe5c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/copy-proj-info-f059b5a1330cd599d89ba88d6714883c.png differ diff --git a/packages/noco-docs/dist/assets/images/create-view-1-336b23c8d721344a1924560932a8ca6f.png b/packages/noco-docs/dist/assets/images/create-view-1-336b23c8d721344a1924560932a8ca6f.png new file mode 100644 index 0000000000..89bf00c321 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/create-view-1-336b23c8d721344a1924560932a8ca6f.png differ diff --git a/packages/noco-docs/dist/assets/images/create-view-2-b1e2ae57004dc07a6bf2fc3e9121f7f9.png b/packages/noco-docs/dist/assets/images/create-view-2-b1e2ae57004dc07a6bf2fc3e9121f7f9.png new file mode 100644 index 0000000000..f729d3db50 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/create-view-2-b1e2ae57004dc07a6bf2fc3e9121f7f9.png differ diff --git a/packages/noco-docs/dist/assets/images/create-webhook-1-be523f2a91b6829cd8d82915d07e92e4.png b/packages/noco-docs/dist/assets/images/create-webhook-1-be523f2a91b6829cd8d82915d07e92e4.png new file mode 100644 index 0000000000..0c6d91a2bd Binary files /dev/null and b/packages/noco-docs/dist/assets/images/create-webhook-1-be523f2a91b6829cd8d82915d07e92e4.png differ diff --git a/packages/noco-docs/dist/assets/images/create-webhook-2-ae6af25bd288d16427ddbcd283a32eb2.png b/packages/noco-docs/dist/assets/images/create-webhook-2-ae6af25bd288d16427ddbcd283a32eb2.png new file mode 100644 index 0000000000..149e580f6f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/create-webhook-2-ae6af25bd288d16427ddbcd283a32eb2.png differ diff --git a/packages/noco-docs/dist/assets/images/currency-97e11fde0e86cf5aa78c6e3117bd9ee8.png b/packages/noco-docs/dist/assets/images/currency-97e11fde0e86cf5aa78c6e3117bd9ee8.png new file mode 100644 index 0000000000..6161091e43 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/currency-97e11fde0e86cf5aa78c6e3117bd9ee8.png differ diff --git a/packages/noco-docs/dist/assets/images/currency-cell-display-d3e0309151ff2bb7cc72a48861a565bd.png b/packages/noco-docs/dist/assets/images/currency-cell-display-d3e0309151ff2bb7cc72a48861a565bd.png new file mode 100644 index 0000000000..dc019c6961 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/currency-cell-display-d3e0309151ff2bb7cc72a48861a565bd.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-2-85c6555101f32ed24b6ad18937e62f96.png b/packages/noco-docs/dist/assets/images/data-source-2-85c6555101f32ed24b6ad18937e62f96.png new file mode 100644 index 0000000000..0dfb695bb1 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-2-85c6555101f32ed24b6ad18937e62f96.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-3-702f8672d11868999be1db2082089c6d.png b/packages/noco-docs/dist/assets/images/data-source-3-702f8672d11868999be1db2082089c6d.png new file mode 100644 index 0000000000..77346e40fe Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-3-702f8672d11868999be1db2082089c6d.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-4-0d1aded7e8c2f19c54cbd3b1ae404194.png b/packages/noco-docs/dist/assets/images/data-source-4-0d1aded7e8c2f19c54cbd3b1ae404194.png new file mode 100644 index 0000000000..c41c21752f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-4-0d1aded7e8c2f19c54cbd3b1ae404194.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-a136125c9bc5031ada9df69ba6484d5a.png b/packages/noco-docs/dist/assets/images/data-source-a136125c9bc5031ada9df69ba6484d5a.png new file mode 100644 index 0000000000..3311b364dc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-a136125c9bc5031ada9df69ba6484d5a.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-connect-1-e1cd8c562d3d3db9699aba4395d8a800.png b/packages/noco-docs/dist/assets/images/data-source-connect-1-e1cd8c562d3d3db9699aba4395d8a800.png new file mode 100644 index 0000000000..d893e46378 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-connect-1-e1cd8c562d3d3db9699aba4395d8a800.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-connect-2-5eaa0a1ab29767749a9ea725e28ad47c.png b/packages/noco-docs/dist/assets/images/data-source-connect-2-5eaa0a1ab29767749a9ea725e28ad47c.png new file mode 100644 index 0000000000..98654540ea Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-connect-2-5eaa0a1ab29767749a9ea725e28ad47c.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-connect-3-48b79f4e92d396e681c0ede769e990d9.png b/packages/noco-docs/dist/assets/images/data-source-connect-3-48b79f4e92d396e681c0ede769e990d9.png new file mode 100644 index 0000000000..4222ea2627 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-connect-3-48b79f4e92d396e681c0ede769e990d9.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-edit-c8839805c570f2eaef08012a94f31246.png b/packages/noco-docs/dist/assets/images/data-source-edit-c8839805c570f2eaef08012a94f31246.png new file mode 100644 index 0000000000..314df70957 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-edit-c8839805c570f2eaef08012a94f31246.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-meta-sync-04cd020f9b20939911dab34bb2a85820.png b/packages/noco-docs/dist/assets/images/data-source-meta-sync-04cd020f9b20939911dab34bb2a85820.png new file mode 100644 index 0000000000..70c10a1458 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-meta-sync-04cd020f9b20939911dab34bb2a85820.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-post-sync-82f4dc6812378d0f4b119efaa7761735.png b/packages/noco-docs/dist/assets/images/data-source-post-sync-82f4dc6812378d0f4b119efaa7761735.png new file mode 100644 index 0000000000..bec1f18dec Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-post-sync-82f4dc6812378d0f4b119efaa7761735.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-unlink-517f290e2d4be67315dd4336bd699ce4.png b/packages/noco-docs/dist/assets/images/data-source-unlink-517f290e2d4be67315dd4336bd699ce4.png new file mode 100644 index 0000000000..8172914464 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-unlink-517f290e2d4be67315dd4336bd699ce4.png differ diff --git a/packages/noco-docs/dist/assets/images/data-source-visibility-4c2aa0d95c0280597aac2754392abaae.png b/packages/noco-docs/dist/assets/images/data-source-visibility-4c2aa0d95c0280597aac2754392abaae.png new file mode 100644 index 0000000000..b7c382e7f4 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/data-source-visibility-4c2aa0d95c0280597aac2754392abaae.png differ diff --git a/packages/noco-docs/dist/assets/images/date-f31bd796ffe546c4ad5c3bd0def5df03.png b/packages/noco-docs/dist/assets/images/date-f31bd796ffe546c4ad5c3bd0def5df03.png new file mode 100644 index 0000000000..ffd1295ee6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/date-f31bd796ffe546c4ad5c3bd0def5df03.png differ diff --git a/packages/noco-docs/dist/assets/images/datetime-b83c4ad4a6b314544003b8b721c323a2.png b/packages/noco-docs/dist/assets/images/datetime-b83c4ad4a6b314544003b8b721c323a2.png new file mode 100644 index 0000000000..f478901c34 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/datetime-b83c4ad4a6b314544003b8b721c323a2.png differ diff --git a/packages/noco-docs/dist/assets/images/decimal-8e66d00b5270b1f38775d7e71d46975a.png b/packages/noco-docs/dist/assets/images/decimal-8e66d00b5270b1f38775d7e71d46975a.png new file mode 100644 index 0000000000..041e270947 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/decimal-8e66d00b5270b1f38775d7e71d46975a.png differ diff --git a/packages/noco-docs/dist/assets/images/delete-row-2ef2b7c113b757dabf1542106e79f2db.png b/packages/noco-docs/dist/assets/images/delete-row-2ef2b7c113b757dabf1542106e79f2db.png new file mode 100644 index 0000000000..9c1c5238fa Binary files /dev/null and b/packages/noco-docs/dist/assets/images/delete-row-2ef2b7c113b757dabf1542106e79f2db.png differ diff --git a/packages/noco-docs/dist/assets/images/delete-row-bulk-70240cbb8e8a5e84e368e9ff11b6e5c0.png b/packages/noco-docs/dist/assets/images/delete-row-bulk-70240cbb8e8a5e84e368e9ff11b6e5c0.png new file mode 100644 index 0000000000..9813fe94ef Binary files /dev/null and b/packages/noco-docs/dist/assets/images/delete-row-bulk-70240cbb8e8a5e84e368e9ff11b6e5c0.png differ diff --git a/packages/noco-docs/dist/assets/images/delete-view-confirmation-1afddd0d2975dde5d235b6ee04893b59.png b/packages/noco-docs/dist/assets/images/delete-view-confirmation-1afddd0d2975dde5d235b6ee04893b59.png new file mode 100644 index 0000000000..730f5964e0 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/delete-view-confirmation-1afddd0d2975dde5d235b6ee04893b59.png differ diff --git a/packages/noco-docs/dist/assets/images/details-api-snippet-78906ef3b2248845b8955eed84a3031e.png b/packages/noco-docs/dist/assets/images/details-api-snippet-78906ef3b2248845b8955eed84a3031e.png new file mode 100644 index 0000000000..f59e9c98fa Binary files /dev/null and b/packages/noco-docs/dist/assets/images/details-api-snippet-78906ef3b2248845b8955eed84a3031e.png differ diff --git a/packages/noco-docs/dist/assets/images/details-field-editor-6b80e39a53b09c20af27e53b9777ea9a.png b/packages/noco-docs/dist/assets/images/details-field-editor-6b80e39a53b09c20af27e53b9777ea9a.png new file mode 100644 index 0000000000..943d7ff2bc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/details-field-editor-6b80e39a53b09c20af27e53b9777ea9a.png differ diff --git a/packages/noco-docs/dist/assets/images/details-relations-0716794b3e749928f581e2a2f78931a3.png b/packages/noco-docs/dist/assets/images/details-relations-0716794b3e749928f581e2a2f78931a3.png new file mode 100644 index 0000000000..268465a9e3 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/details-relations-0716794b3e749928f581e2a2f78931a3.png differ diff --git a/packages/noco-docs/dist/assets/images/details-tab-8aeca1f70ead223a641ead51b82e97f5.png b/packages/noco-docs/dist/assets/images/details-tab-8aeca1f70ead223a641ead51b82e97f5.png new file mode 100644 index 0000000000..40a0be52eb Binary files /dev/null and b/packages/noco-docs/dist/assets/images/details-tab-8aeca1f70ead223a641ead51b82e97f5.png differ diff --git a/packages/noco-docs/dist/assets/images/details-webhook-834a408cf5a6b9d711ac6ab63a1eaa4a.png b/packages/noco-docs/dist/assets/images/details-webhook-834a408cf5a6b9d711ac6ab63a1eaa4a.png new file mode 100644 index 0000000000..ceffbf4f0b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/details-webhook-834a408cf5a6b9d711ac6ab63a1eaa4a.png differ diff --git a/packages/noco-docs/dist/assets/images/display-value-90a8f4b70e88e428acbff6e49a339325.png b/packages/noco-docs/dist/assets/images/display-value-90a8f4b70e88e428acbff6e49a339325.png new file mode 100644 index 0000000000..34ce596af7 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/display-value-90a8f4b70e88e428acbff6e49a339325.png differ diff --git a/packages/noco-docs/dist/assets/images/display-value-in-linked-record-a2d5ae449c2be23c1b31d60beb97d063.png b/packages/noco-docs/dist/assets/images/display-value-in-linked-record-a2d5ae449c2be23c1b31d60beb97d063.png new file mode 100644 index 0000000000..213e7ee4f8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/display-value-in-linked-record-a2d5ae449c2be23c1b31d60beb97d063.png differ diff --git a/packages/noco-docs/dist/assets/images/download-7abfaf6c07a06e7669524f44c1832cc3.png b/packages/noco-docs/dist/assets/images/download-7abfaf6c07a06e7669524f44c1832cc3.png new file mode 100644 index 0000000000..17b8a32f21 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/download-7abfaf6c07a06e7669524f44c1832cc3.png differ diff --git a/packages/noco-docs/dist/assets/images/duplicate-confirmation-319dac1b1b6351e9c1da8019160cd854.png b/packages/noco-docs/dist/assets/images/duplicate-confirmation-319dac1b1b6351e9c1da8019160cd854.png new file mode 100644 index 0000000000..6d00794980 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/duplicate-confirmation-319dac1b1b6351e9c1da8019160cd854.png differ diff --git a/packages/noco-docs/dist/assets/images/duration-240ca3f3201ea99e948bebd59e41dce8.png b/packages/noco-docs/dist/assets/images/duration-240ca3f3201ea99e948bebd59e41dce8.png new file mode 100644 index 0000000000..4f618d63a0 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/duration-240ca3f3201ea99e948bebd59e41dce8.png differ diff --git a/packages/noco-docs/dist/assets/images/edit-base-9071d099ef7f2dcb99604c31f0ab60f8.png b/packages/noco-docs/dist/assets/images/edit-base-9071d099ef7f2dcb99604c31f0ab60f8.png new file mode 100644 index 0000000000..1de6dfd463 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/edit-base-9071d099ef7f2dcb99604c31f0ab60f8.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-1-ddd6d6729461087c92975c45ce91d6f5.png b/packages/noco-docs/dist/assets/images/editor-1-ddd6d6729461087c92975c45ce91d6f5.png new file mode 100644 index 0000000000..c199cb0a5d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-1-ddd6d6729461087c92975c45ce91d6f5.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-2-0667da2fd4b01aff63dd46bd6de88c45.png b/packages/noco-docs/dist/assets/images/editor-2-0667da2fd4b01aff63dd46bd6de88c45.png new file mode 100644 index 0000000000..4068a38700 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-2-0667da2fd4b01aff63dd46bd6de88c45.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-3-ad3441d6a5768c22f4492f08b27f1e1c.png b/packages/noco-docs/dist/assets/images/editor-3-ad3441d6a5768c22f4492f08b27f1e1c.png new file mode 100644 index 0000000000..f7e04a367b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-3-ad3441d6a5768c22f4492f08b27f1e1c.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-4-fe455a4c037d3a57453c392882011d3f.png b/packages/noco-docs/dist/assets/images/editor-4-fe455a4c037d3a57453c392882011d3f.png new file mode 100644 index 0000000000..46cf4c1c0b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-4-fe455a4c037d3a57453c392882011d3f.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-5-c94a775143e65de178bf5433a3d065e0.png b/packages/noco-docs/dist/assets/images/editor-5-c94a775143e65de178bf5433a3d065e0.png new file mode 100644 index 0000000000..4fab59788c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-5-c94a775143e65de178bf5433a3d065e0.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-6-b620074db2f4712246b9cc176b31fbf4.png b/packages/noco-docs/dist/assets/images/editor-6-b620074db2f4712246b9cc176b31fbf4.png new file mode 100644 index 0000000000..e998bf8d4b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-6-b620074db2f4712246b9cc176b31fbf4.png differ diff --git a/packages/noco-docs/dist/assets/images/editor-7-70e0e1228c366d69cbe4b261fa7e0368.png b/packages/noco-docs/dist/assets/images/editor-7-70e0e1228c366d69cbe4b261fa7e0368.png new file mode 100644 index 0000000000..17218b0796 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/editor-7-70e0e1228c366d69cbe4b261fa7e0368.png differ diff --git a/packages/noco-docs/dist/assets/images/email-764cb45f6208ba575ca2b5c1dabded86.png b/packages/noco-docs/dist/assets/images/email-764cb45f6208ba575ca2b5c1dabded86.png new file mode 100644 index 0000000000..f9496c8e31 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/email-764cb45f6208ba575ca2b5c1dabded86.png differ diff --git a/packages/noco-docs/dist/assets/images/engineering-search-by-tags-9453d5cf2d1534c2f812c7aee697fe43.png b/packages/noco-docs/dist/assets/images/engineering-search-by-tags-9453d5cf2d1534c2f812c7aee697fe43.png new file mode 100644 index 0000000000..bff0b02246 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/engineering-search-by-tags-9453d5cf2d1534c2f812c7aee697fe43.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-a6994cfda6583e45767dc6b555c4955d.png b/packages/noco-docs/dist/assets/images/expand-record-a6994cfda6583e45767dc6b555c4955d.png new file mode 100644 index 0000000000..346cc2e7fa Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-a6994cfda6583e45767dc6b555c4955d.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-audits-bf292e9a7cdbe5bf190de009938e4c6e.png b/packages/noco-docs/dist/assets/images/expand-record-audits-bf292e9a7cdbe5bf190de009938e4c6e.png new file mode 100644 index 0000000000..b4a4c85511 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-audits-bf292e9a7cdbe5bf190de009938e4c6e.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-comments-12f3520bc08a1a26617b4818151c2ea3.png b/packages/noco-docs/dist/assets/images/expand-record-comments-12f3520bc08a1a26617b4818151c2ea3.png new file mode 100644 index 0000000000..2fb09917c5 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-comments-12f3520bc08a1a26617b4818151c2ea3.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-comments-edit-1-e662dc5437f594d10d70d8486d36d28e.png b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-1-e662dc5437f594d10d70d8486d36d28e.png new file mode 100644 index 0000000000..9dcda8b48b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-1-e662dc5437f594d10d70d8486d36d28e.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-comments-edit-2-e7b2e2de1b7f8fcba6a9397f45ff25bf.png b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-2-e7b2e2de1b7f8fcba6a9397f45ff25bf.png new file mode 100644 index 0000000000..e6599eba1a Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-2-e7b2e2de1b7f8fcba6a9397f45ff25bf.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-comments-edit-3-19a3dc35ed057a0a5366787dfd0c62d9.png b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-3-19a3dc35ed057a0a5366787dfd0c62d9.png new file mode 100644 index 0000000000..1b24b70f4b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-comments-edit-3-19a3dc35ed057a0a5366787dfd0c62d9.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-context-menu-2-168bebb2555d7a38bfb2057537d0f419.png b/packages/noco-docs/dist/assets/images/expand-record-context-menu-2-168bebb2555d7a38bfb2057537d0f419.png new file mode 100644 index 0000000000..eeed15d36d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-context-menu-2-168bebb2555d7a38bfb2057537d0f419.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-delete-confirmation-8bff11568a9cb49f91ebc282f7406b17.png b/packages/noco-docs/dist/assets/images/expand-record-delete-confirmation-8bff11568a9cb49f91ebc282f7406b17.png new file mode 100644 index 0000000000..efb5d7f401 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-delete-confirmation-8bff11568a9cb49f91ebc282f7406b17.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-edit-detailed-6f19acb8858b217ee834670b8deeee44.png b/packages/noco-docs/dist/assets/images/expand-record-edit-detailed-6f19acb8858b217ee834670b8deeee44.png new file mode 100644 index 0000000000..309fef7d71 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-edit-detailed-6f19acb8858b217ee834670b8deeee44.png differ diff --git a/packages/noco-docs/dist/assets/images/expand-record-from-grid-1eaf2b31021fe85c6163aa234db48f1f.png b/packages/noco-docs/dist/assets/images/expand-record-from-grid-1eaf2b31021fe85c6163aa234db48f1f.png new file mode 100644 index 0000000000..a367426048 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/expand-record-from-grid-1eaf2b31021fe85c6163aa234db48f1f.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-context-menu-bdaf40426dd6cee3e064967ef9c0e1bd.png b/packages/noco-docs/dist/assets/images/fields-context-menu-bdaf40426dd6cee3e064967ef9c0e1bd.png new file mode 100644 index 0000000000..4a815c7549 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-context-menu-bdaf40426dd6cee3e064967ef9c0e1bd.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-edit-2-565e86f68e89b2c0d5a009e26825586b.png b/packages/noco-docs/dist/assets/images/fields-edit-2-565e86f68e89b2c0d5a009e26825586b.png new file mode 100644 index 0000000000..439878e2ab Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-edit-2-565e86f68e89b2c0d5a009e26825586b.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-edit-3-9f36d47020d18da0b1f30c893bc62b73.png b/packages/noco-docs/dist/assets/images/fields-edit-3-9f36d47020d18da0b1f30c893bc62b73.png new file mode 100644 index 0000000000..2557134572 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-edit-3-9f36d47020d18da0b1f30c893bc62b73.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-edit-4-5eb8140cd39f4ee2364081b214612861.png b/packages/noco-docs/dist/assets/images/fields-edit-4-5eb8140cd39f4ee2364081b214612861.png new file mode 100644 index 0000000000..894055832c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-edit-4-5eb8140cd39f4ee2364081b214612861.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-hide-5d148bab6699773742b9bfed3c0fce87.png b/packages/noco-docs/dist/assets/images/fields-hide-5d148bab6699773742b9bfed3c0fce87.png new file mode 100644 index 0000000000..ef742c5976 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-hide-5d148bab6699773742b9bfed3c0fce87.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-reorder-f25c546ea11fd8df6d4d0eafc1d4e5ae.png b/packages/noco-docs/dist/assets/images/fields-reorder-f25c546ea11fd8df6d4d0eafc1d4e5ae.png new file mode 100644 index 0000000000..0b76dbaf44 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-reorder-f25c546ea11fd8df6d4d0eafc1d4e5ae.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-show-system-fields-2eb0f4e0a0c16c6b46c38f243709e581.png b/packages/noco-docs/dist/assets/images/fields-show-system-fields-2eb0f4e0a0c16c6b46c38f243709e581.png new file mode 100644 index 0000000000..fc2a9ad0d6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-show-system-fields-2eb0f4e0a0c16c6b46c38f243709e581.png differ diff --git a/packages/noco-docs/dist/assets/images/fields-width-b843c90fee1c762db57dd39a37c931cf.png b/packages/noco-docs/dist/assets/images/fields-width-b843c90fee1c762db57dd39a37c931cf.png new file mode 100644 index 0000000000..44d9debaf1 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/fields-width-b843c90fee1c762db57dd39a37c931cf.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-1-6d82d6adaa0df9338b4c29b6376de557.png b/packages/noco-docs/dist/assets/images/filter-1-6d82d6adaa0df9338b4c29b6376de557.png new file mode 100644 index 0000000000..0e3ac05a6c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-1-6d82d6adaa0df9338b4c29b6376de557.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-2-51019e4c6061e78b8b3df002cf6db8f5.png b/packages/noco-docs/dist/assets/images/filter-2-51019e4c6061e78b8b3df002cf6db8f5.png new file mode 100644 index 0000000000..162bca5c47 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-2-51019e4c6061e78b8b3df002cf6db8f5.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-3-f6db70222f513a250bf4b0bd36e3c158.png b/packages/noco-docs/dist/assets/images/filter-3-f6db70222f513a250bf4b0bd36e3c158.png new file mode 100644 index 0000000000..847f4f101a Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-3-f6db70222f513a250bf4b0bd36e3c158.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-4-058ba55633cb86f5b1a5431c1ee8766d.png b/packages/noco-docs/dist/assets/images/filter-4-058ba55633cb86f5b1a5431c1ee8766d.png new file mode 100644 index 0000000000..d8659ddcad Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-4-058ba55633cb86f5b1a5431c1ee8766d.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-5-e2ea016b369c57c5787ec7c4259f7fc6.png b/packages/noco-docs/dist/assets/images/filter-5-e2ea016b369c57c5787ec7c4259f7fc6.png new file mode 100644 index 0000000000..58ec38fe9d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-5-e2ea016b369c57c5787ec7c4259f7fc6.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-is-blank-93b9ad8f1a235a7a0c0e198c076a7caf.png b/packages/noco-docs/dist/assets/images/filter-is-blank-93b9ad8f1a235a7a0c0e198c076a7caf.png new file mode 100644 index 0000000000..24775f83d4 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-is-blank-93b9ad8f1a235a7a0c0e198c076a7caf.png differ diff --git a/packages/noco-docs/dist/assets/images/filter-is-null-empty-1341b5cc9439c361df4992106ff00ad6.png b/packages/noco-docs/dist/assets/images/filter-is-null-empty-1341b5cc9439c361df4992106ff00ad6.png new file mode 100644 index 0000000000..ac7f481da2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/filter-is-null-empty-1341b5cc9439c361df4992106ff00ad6.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-94e8ab4d97828f668019451e303409c0.png b/packages/noco-docs/dist/assets/images/form-view-94e8ab4d97828f668019451e303409c0.png new file mode 100644 index 0000000000..03eba6f8b9 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-94e8ab4d97828f668019451e303409c0.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-add-field-26399d5da0f299a76f045286f4b70690.png b/packages/noco-docs/dist/assets/images/form-view-add-field-26399d5da0f299a76f045286f4b70690.png new file mode 100644 index 0000000000..7d84b87d07 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-add-field-26399d5da0f299a76f045286f4b70690.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-field-label-help-text-aa69425b678df2503add4a96f926e238.png b/packages/noco-docs/dist/assets/images/form-view-field-label-help-text-aa69425b678df2503add4a96f926e238.png new file mode 100644 index 0000000000..3c55f06d95 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-field-label-help-text-aa69425b678df2503add4a96f926e238.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-layout-348a2dba9c9ceafe6911477b7e530283.png b/packages/noco-docs/dist/assets/images/form-view-layout-348a2dba9c9ceafe6911477b7e530283.png new file mode 100644 index 0000000000..d47ffe1c4b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-layout-348a2dba9c9ceafe6911477b7e530283.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-remove-field-efc0f8d307ab234bfea21fa9c467dfd6.png b/packages/noco-docs/dist/assets/images/form-view-remove-field-efc0f8d307ab234bfea21fa9c467dfd6.png new file mode 100644 index 0000000000..221c75b063 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-remove-field-efc0f8d307ab234bfea21fa9c467dfd6.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-required-field-62f44205bdd070ef8c4c8d30de181286.png b/packages/noco-docs/dist/assets/images/form-view-required-field-62f44205bdd070ef8c4c8d30de181286.png new file mode 100644 index 0000000000..e8c9e0ddfe Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-required-field-62f44205bdd070ef8c4c8d30de181286.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-settings-f765389d102cecdac46b0258b696344f.png b/packages/noco-docs/dist/assets/images/form-view-settings-f765389d102cecdac46b0258b696344f.png new file mode 100644 index 0000000000..cd6be7aaf5 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-settings-f765389d102cecdac46b0258b696344f.png differ diff --git a/packages/noco-docs/dist/assets/images/form-view-title-description-99d122bea09868f65bd0f6e04e087db4.png b/packages/noco-docs/dist/assets/images/form-view-title-description-99d122bea09868f65bd0f6e04e087db4.png new file mode 100644 index 0000000000..99767a10a8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/form-view-title-description-99d122bea09868f65bd0f6e04e087db4.png differ diff --git a/packages/noco-docs/dist/assets/images/formula-f6e9e22e90579dd9f7307338dde8ec07.png b/packages/noco-docs/dist/assets/images/formula-f6e9e22e90579dd9f7307338dde8ec07.png new file mode 100644 index 0000000000..8ab70b0cec Binary files /dev/null and b/packages/noco-docs/dist/assets/images/formula-f6e9e22e90579dd9f7307338dde8ec07.png differ diff --git a/packages/noco-docs/dist/assets/images/gallery-45f0b39f541ab7afc2a5b7d44f010406.png b/packages/noco-docs/dist/assets/images/gallery-45f0b39f541ab7afc2a5b7d44f010406.png new file mode 100644 index 0000000000..b0cab75474 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/gallery-45f0b39f541ab7afc2a5b7d44f010406.png differ diff --git a/packages/noco-docs/dist/assets/images/geometry-e43058dba3ccb3be62b68fb61ca7e67d.png b/packages/noco-docs/dist/assets/images/geometry-e43058dba3ccb3be62b68fb61ca7e67d.png new file mode 100644 index 0000000000..bf4b9613ff Binary files /dev/null and b/packages/noco-docs/dist/assets/images/geometry-e43058dba3ccb3be62b68fb61ca7e67d.png differ diff --git a/packages/noco-docs/dist/assets/images/grid-a278b184ce772b6c7263abc105f09a76.png b/packages/noco-docs/dist/assets/images/grid-a278b184ce772b6c7263abc105f09a76.png new file mode 100644 index 0000000000..92666f2510 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/grid-a278b184ce772b6c7263abc105f09a76.png differ diff --git a/packages/noco-docs/dist/assets/images/group-by-1-9fca54ae46eb7c74e888a44d49416e9c.png b/packages/noco-docs/dist/assets/images/group-by-1-9fca54ae46eb7c74e888a44d49416e9c.png new file mode 100644 index 0000000000..1fbe1cd7b2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/group-by-1-9fca54ae46eb7c74e888a44d49416e9c.png differ diff --git a/packages/noco-docs/dist/assets/images/group-by-create-903d7ed5fc17d47bcf49b5c84f201f80.png b/packages/noco-docs/dist/assets/images/group-by-create-903d7ed5fc17d47bcf49b5c84f201f80.png new file mode 100644 index 0000000000..9881e94a58 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/group-by-create-903d7ed5fc17d47bcf49b5c84f201f80.png differ diff --git a/packages/noco-docs/dist/assets/images/group-by-delete-2bb963126a68838d8c7dc51e7cf139bb.png b/packages/noco-docs/dist/assets/images/group-by-delete-2bb963126a68838d8c7dc51e7cf139bb.png new file mode 100644 index 0000000000..5c123a59bc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/group-by-delete-2bb963126a68838d8c7dc51e7cf139bb.png differ diff --git a/packages/noco-docs/dist/assets/images/group-by-nested-68c0f8159f38c76343ee6905c701fd5e.png b/packages/noco-docs/dist/assets/images/group-by-nested-68c0f8159f38c76343ee6905c701fd5e.png new file mode 100644 index 0000000000..e5db4401c2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/group-by-nested-68c0f8159f38c76343ee6905c701fd5e.png differ diff --git a/packages/noco-docs/dist/assets/images/import-csv-515b6519a0b425cfa1672cd51ec465d6.png b/packages/noco-docs/dist/assets/images/import-csv-515b6519a0b425cfa1672cd51ec465d6.png new file mode 100644 index 0000000000..3a77b07da2 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/import-csv-515b6519a0b425cfa1672cd51ec465d6.png differ diff --git a/packages/noco-docs/dist/assets/images/import-csv-url-f9d895566bcab33720fd7272125e1a37.png b/packages/noco-docs/dist/assets/images/import-csv-url-f9d895566bcab33720fd7272125e1a37.png new file mode 100644 index 0000000000..bf3eb9ec63 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/import-csv-url-f9d895566bcab33720fd7272125e1a37.png differ diff --git a/packages/noco-docs/dist/assets/images/import-stage-2-9b0b9c7805b194f2dbe8017eae3c5d80.png b/packages/noco-docs/dist/assets/images/import-stage-2-9b0b9c7805b194f2dbe8017eae3c5d80.png new file mode 100644 index 0000000000..cb364c68df Binary files /dev/null and b/packages/noco-docs/dist/assets/images/import-stage-2-9b0b9c7805b194f2dbe8017eae3c5d80.png differ diff --git a/packages/noco-docs/dist/assets/images/invite-only-sign-up-a9a36ba0e96b88ac229b92889b471ae9.png b/packages/noco-docs/dist/assets/images/invite-only-sign-up-a9a36ba0e96b88ac229b92889b471ae9.png new file mode 100644 index 0000000000..b81a8259fb Binary files /dev/null and b/packages/noco-docs/dist/assets/images/invite-only-sign-up-a9a36ba0e96b88ac229b92889b471ae9.png differ diff --git a/packages/noco-docs/dist/assets/images/junction-table-28270cb936c6107d21e68edaaed04913.png b/packages/noco-docs/dist/assets/images/junction-table-28270cb936c6107d21e68edaaed04913.png new file mode 100644 index 0000000000..c08fd1a1a8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/junction-table-28270cb936c6107d21e68edaaed04913.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-add-record-6d53ed410a1ee0323790496461b53aff.png b/packages/noco-docs/dist/assets/images/kanban-add-record-6d53ed410a1ee0323790496461b53aff.png new file mode 100644 index 0000000000..22a876f884 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-add-record-6d53ed410a1ee0323790496461b53aff.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-change-stack-a8d26dff838ea4b480a30e2db1d0624f.png b/packages/noco-docs/dist/assets/images/kanban-change-stack-a8d26dff838ea4b480a30e2db1d0624f.png new file mode 100644 index 0000000000..b35ba3701c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-change-stack-a8d26dff838ea4b480a30e2db1d0624f.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-collapse-stack-8ec03d704b55aba7bbc1510efd0f746d.png b/packages/noco-docs/dist/assets/images/kanban-collapse-stack-8ec03d704b55aba7bbc1510efd0f746d.png new file mode 100644 index 0000000000..e0f960d889 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-collapse-stack-8ec03d704b55aba7bbc1510efd0f746d.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-delete-stack-b51611d8427f1a16a295861c0c91eb94.png b/packages/noco-docs/dist/assets/images/kanban-delete-stack-b51611d8427f1a16a295861c0c91eb94.png new file mode 100644 index 0000000000..e6b04e0ad9 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-delete-stack-b51611d8427f1a16a295861c0c91eb94.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-delete-stack-confirmation-e4b55be5361259d84852953931f63f8c.png b/packages/noco-docs/dist/assets/images/kanban-delete-stack-confirmation-e4b55be5361259d84852953931f63f8c.png new file mode 100644 index 0000000000..c337718ba4 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-delete-stack-confirmation-e4b55be5361259d84852953931f63f8c.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-e00b90c6413259b626deeeb6659281ea.png b/packages/noco-docs/dist/assets/images/kanban-e00b90c6413259b626deeeb6659281ea.png new file mode 100644 index 0000000000..cfdfc4782d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-e00b90c6413259b626deeeb6659281ea.png differ diff --git a/packages/noco-docs/dist/assets/images/kanban-edit-stack-options-7f9e0324e6068956dae0268031c712f7.png b/packages/noco-docs/dist/assets/images/kanban-edit-stack-options-7f9e0324e6068956dae0268031c712f7.png new file mode 100644 index 0000000000..23e468b30b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/kanban-edit-stack-options-7f9e0324e6068956dae0268031c712f7.png differ diff --git a/packages/noco-docs/dist/assets/images/layout-overview-e73d351486ff105d59a64cc0d1801f12.png b/packages/noco-docs/dist/assets/images/layout-overview-e73d351486ff105d59a64cc0d1801f12.png new file mode 100644 index 0000000000..d3e37ac523 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/layout-overview-e73d351486ff105d59a64cc0d1801f12.png differ diff --git a/packages/noco-docs/dist/assets/images/linked-record-modal-3e57fdb38dfa9be609959b9843ec65b4.png b/packages/noco-docs/dist/assets/images/linked-record-modal-3e57fdb38dfa9be609959b9843ec65b4.png new file mode 100644 index 0000000000..841c40dbd9 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/linked-record-modal-3e57fdb38dfa9be609959b9843ec65b4.png differ diff --git a/packages/noco-docs/dist/assets/images/links-66d99647e69bf8d24e49ec0bd0b72714.png b/packages/noco-docs/dist/assets/images/links-66d99647e69bf8d24e49ec0bd0b72714.png new file mode 100644 index 0000000000..362bb1d337 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/links-66d99647e69bf8d24e49ec0bd0b72714.png differ diff --git a/packages/noco-docs/dist/assets/images/links-cell-display-11ef22c835684c116f159598247e9b5d.png b/packages/noco-docs/dist/assets/images/links-cell-display-11ef22c835684c116f159598247e9b5d.png new file mode 100644 index 0000000000..a41c73d62f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/links-cell-display-11ef22c835684c116f159598247e9b5d.png differ diff --git a/packages/noco-docs/dist/assets/images/locked-view-98e409b4c0859f73d2d59b6e418d338b.png b/packages/noco-docs/dist/assets/images/locked-view-98e409b4c0859f73d2d59b6e418d338b.png new file mode 100644 index 0000000000..ad04e57c0f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/locked-view-98e409b4c0859f73d2d59b6e418d338b.png differ diff --git a/packages/noco-docs/dist/assets/images/long-text-expand-2-09cce09ec85355082b79054a189abb37.png b/packages/noco-docs/dist/assets/images/long-text-expand-2-09cce09ec85355082b79054a189abb37.png new file mode 100644 index 0000000000..427913f1cb Binary files /dev/null and b/packages/noco-docs/dist/assets/images/long-text-expand-2-09cce09ec85355082b79054a189abb37.png differ diff --git a/packages/noco-docs/dist/assets/images/long-text-expand-d15b69ace110a10185959d52b19bce63.png b/packages/noco-docs/dist/assets/images/long-text-expand-d15b69ace110a10185959d52b19bce63.png new file mode 100644 index 0000000000..d189d890d5 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/long-text-expand-d15b69ace110a10185959d52b19bce63.png differ diff --git a/packages/noco-docs/dist/assets/images/longtext-6970b99c2c42d656b549a5b2a0f75123.png b/packages/noco-docs/dist/assets/images/longtext-6970b99c2c42d656b549a5b2a0f75123.png new file mode 100644 index 0000000000..d2b7d780dd Binary files /dev/null and b/packages/noco-docs/dist/assets/images/longtext-6970b99c2c42d656b549a5b2a0f75123.png differ diff --git a/packages/noco-docs/dist/assets/images/lookup-440e68c526f06230bf2783298951a749.png b/packages/noco-docs/dist/assets/images/lookup-440e68c526f06230bf2783298951a749.png new file mode 100644 index 0000000000..84963a70f6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/lookup-440e68c526f06230bf2783298951a749.png differ diff --git a/packages/noco-docs/dist/assets/images/multiselect-d61aaaf3d7f5175b899af60f0ecd6225.png b/packages/noco-docs/dist/assets/images/multiselect-d61aaaf3d7f5175b899af60f0ecd6225.png new file mode 100644 index 0000000000..9a1d48eea6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/multiselect-d61aaaf3d7f5175b899af60f0ecd6225.png differ diff --git a/packages/noco-docs/dist/assets/images/new-record-form-80ab9af2574b27d6cf824542057f15af.png b/packages/noco-docs/dist/assets/images/new-record-form-80ab9af2574b27d6cf824542057f15af.png new file mode 100644 index 0000000000..e332c46bda Binary files /dev/null and b/packages/noco-docs/dist/assets/images/new-record-form-80ab9af2574b27d6cf824542057f15af.png differ diff --git a/packages/noco-docs/dist/assets/images/new-record-grid-7ae6148311e56de598a0d729847d8abb.png b/packages/noco-docs/dist/assets/images/new-record-grid-7ae6148311e56de598a0d729847d8abb.png new file mode 100644 index 0000000000..8e70d4bc73 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/new-record-grid-7ae6148311e56de598a0d729847d8abb.png differ diff --git a/packages/noco-docs/dist/assets/images/number-a3e4b9f394fc28d0cd3a7dc2297d608f.png b/packages/noco-docs/dist/assets/images/number-a3e4b9f394fc28d0cd3a7dc2297d608f.png new file mode 100644 index 0000000000..a5dee2eefb Binary files /dev/null and b/packages/noco-docs/dist/assets/images/number-a3e4b9f394fc28d0cd3a7dc2297d608f.png differ diff --git a/packages/noco-docs/dist/assets/images/options-change-colour-08270506854710a13f2945a006fd3779.png b/packages/noco-docs/dist/assets/images/options-change-colour-08270506854710a13f2945a006fd3779.png new file mode 100644 index 0000000000..cb597cb32a Binary files /dev/null and b/packages/noco-docs/dist/assets/images/options-change-colour-08270506854710a13f2945a006fd3779.png differ diff --git a/packages/noco-docs/dist/assets/images/options-remove-9e5b6dcf0682be419ac34c21db0b5716.png b/packages/noco-docs/dist/assets/images/options-remove-9e5b6dcf0682be419ac34c21db0b5716.png new file mode 100644 index 0000000000..6499f8fcd8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/options-remove-9e5b6dcf0682be419ac34c21db0b5716.png differ diff --git a/packages/noco-docs/dist/assets/images/options-reorder-1ee3cf6240593e4055bd781a0c116949.png b/packages/noco-docs/dist/assets/images/options-reorder-1ee3cf6240593e4055bd781a0c116949.png new file mode 100644 index 0000000000..729cbfd609 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/options-reorder-1ee3cf6240593e4055bd781a0c116949.png differ diff --git a/packages/noco-docs/dist/assets/images/pat-1-b1eb986ad72a1c426ccd1ad338b26ecc.png b/packages/noco-docs/dist/assets/images/pat-1-b1eb986ad72a1c426ccd1ad338b26ecc.png new file mode 100644 index 0000000000..b7e1b5ea57 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/pat-1-b1eb986ad72a1c426ccd1ad338b26ecc.png differ diff --git a/packages/noco-docs/dist/assets/images/pat-2-a3fcb811ed325a6d621f45e17e3aee2f.png b/packages/noco-docs/dist/assets/images/pat-2-a3fcb811ed325a6d621f45e17e3aee2f.png new file mode 100644 index 0000000000..8f2385987d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/pat-2-a3fcb811ed325a6d621f45e17e3aee2f.png differ diff --git a/packages/noco-docs/dist/assets/images/pat-3-fd78b26e00f9f01f395a073e54c465f6.png b/packages/noco-docs/dist/assets/images/pat-3-fd78b26e00f9f01f395a073e54c465f6.png new file mode 100644 index 0000000000..e05623fadc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/pat-3-fd78b26e00f9f01f395a073e54c465f6.png differ diff --git a/packages/noco-docs/dist/assets/images/percent-23592b0cefe5dd1b57f2659a5d8859b0.png b/packages/noco-docs/dist/assets/images/percent-23592b0cefe5dd1b57f2659a5d8859b0.png new file mode 100644 index 0000000000..d04a0f09ec Binary files /dev/null and b/packages/noco-docs/dist/assets/images/percent-23592b0cefe5dd1b57f2659a5d8859b0.png differ diff --git a/packages/noco-docs/dist/assets/images/phonenumber-1913eec12ec23e7b62e8c83ca69c7627.png b/packages/noco-docs/dist/assets/images/phonenumber-1913eec12ec23e7b62e8c83ca69c7627.png new file mode 100644 index 0000000000..18a8c93f4f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/phonenumber-1913eec12ec23e7b62e8c83ca69c7627.png differ diff --git a/packages/noco-docs/dist/assets/images/profile-page-a57e61bb64613b60a0567d3589307653.png b/packages/noco-docs/dist/assets/images/profile-page-a57e61bb64613b60a0567d3589307653.png new file mode 100644 index 0000000000..595b45f0b3 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/profile-page-a57e61bb64613b60a0567d3589307653.png differ diff --git a/packages/noco-docs/dist/assets/images/qr-cell-display-4c407736d9529d363e9c5a5894d89064.png b/packages/noco-docs/dist/assets/images/qr-cell-display-4c407736d9529d363e9c5a5894d89064.png new file mode 100644 index 0000000000..794974e1de Binary files /dev/null and b/packages/noco-docs/dist/assets/images/qr-cell-display-4c407736d9529d363e9c5a5894d89064.png differ diff --git a/packages/noco-docs/dist/assets/images/qr-expand-71565f5a001bd474c52fd39577539d73.png b/packages/noco-docs/dist/assets/images/qr-expand-71565f5a001bd474c52fd39577539d73.png new file mode 100644 index 0000000000..ad20576296 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/qr-expand-71565f5a001bd474c52fd39577539d73.png differ diff --git a/packages/noco-docs/dist/assets/images/rating-7dcce304ae8fbf78908c340a87e90da4.png b/packages/noco-docs/dist/assets/images/rating-7dcce304ae8fbf78908c340a87e90da4.png new file mode 100644 index 0000000000..00fd09077c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/rating-7dcce304ae8fbf78908c340a87e90da4.png differ diff --git a/packages/noco-docs/dist/assets/images/rating-cell-ab9000c7aa5624758b22f06f59b5495e.png b/packages/noco-docs/dist/assets/images/rating-cell-ab9000c7aa5624758b22f06f59b5495e.png new file mode 100644 index 0000000000..06bb2c1d8c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/rating-cell-ab9000c7aa5624758b22f06f59b5495e.png differ diff --git a/packages/noco-docs/dist/assets/images/rating-icon-06378f121f8364a58ce1b0da016f6b12.png b/packages/noco-docs/dist/assets/images/rating-icon-06378f121f8364a58ce1b0da016f6b12.png new file mode 100644 index 0000000000..6e5c40a1dc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/rating-icon-06378f121f8364a58ce1b0da016f6b12.png differ diff --git a/packages/noco-docs/dist/assets/images/rollup-bf68cdbc91743484a43f978f74ce18ef.png b/packages/noco-docs/dist/assets/images/rollup-bf68cdbc91743484a43f978f74ce18ef.png new file mode 100644 index 0000000000..d4543b3251 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/rollup-bf68cdbc91743484a43f978f74ce18ef.png differ diff --git a/packages/noco-docs/dist/assets/images/row-height-1-b999107b8ea25b026213a6c67498695b.png b/packages/noco-docs/dist/assets/images/row-height-1-b999107b8ea25b026213a6c67498695b.png new file mode 100644 index 0000000000..72fe3d9963 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/row-height-1-b999107b8ea25b026213a6c67498695b.png differ diff --git a/packages/noco-docs/dist/assets/images/row-height-2-422a0b8fac325abb9392cbd5763ee5c7.png b/packages/noco-docs/dist/assets/images/row-height-2-422a0b8fac325abb9392cbd5763ee5c7.png new file mode 100644 index 0000000000..55925773f7 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/row-height-2-422a0b8fac325abb9392cbd5763ee5c7.png differ diff --git a/packages/noco-docs/dist/assets/images/row-height-3-8b665502bcb2cb4bde649e53698161f5.png b/packages/noco-docs/dist/assets/images/row-height-3-8b665502bcb2cb4bde649e53698161f5.png new file mode 100644 index 0000000000..12b0d01a45 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/row-height-3-8b665502bcb2cb4bde649e53698161f5.png differ diff --git a/packages/noco-docs/dist/assets/images/row-height-4-6672aa1a7be4bd6075b285f7324c61bc.png b/packages/noco-docs/dist/assets/images/row-height-4-6672aa1a7be4bd6075b285f7324c61bc.png new file mode 100644 index 0000000000..6f99f89c54 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/row-height-4-6672aa1a7be4bd6075b285f7324c61bc.png differ diff --git a/packages/noco-docs/dist/assets/images/row-height-5-e58d68386f8aa821d5a32c7411ef4ba9.png b/packages/noco-docs/dist/assets/images/row-height-5-e58d68386f8aa821d5a32c7411ef4ba9.png new file mode 100644 index 0000000000..9117c59f53 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/row-height-5-e58d68386f8aa821d5a32c7411ef4ba9.png differ diff --git a/packages/noco-docs/dist/assets/images/set-as-display-value-dcd56ac34c7d3e79a72b2abcab08f1f8.png b/packages/noco-docs/dist/assets/images/set-as-display-value-dcd56ac34c7d3e79a72b2abcab08f1f8.png new file mode 100644 index 0000000000..0b12a01968 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/set-as-display-value-dcd56ac34c7d3e79a72b2abcab08f1f8.png differ diff --git a/packages/noco-docs/dist/assets/images/share-base-1-b9c4bddb603c184a16da76c4e1e08edb.png b/packages/noco-docs/dist/assets/images/share-base-1-b9c4bddb603c184a16da76c4e1e08edb.png new file mode 100644 index 0000000000..0ca9eec1ef Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-base-1-b9c4bddb603c184a16da76c4e1e08edb.png differ diff --git a/packages/noco-docs/dist/assets/images/share-base-2-07354533111aa13a608996b10640f468.png b/packages/noco-docs/dist/assets/images/share-base-2-07354533111aa13a608996b10640f468.png new file mode 100644 index 0000000000..71065f2454 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-base-2-07354533111aa13a608996b10640f468.png differ diff --git a/packages/noco-docs/dist/assets/images/share-base-edit-access-b293bc0349998853d6de8a9784ae9e54.png b/packages/noco-docs/dist/assets/images/share-base-edit-access-b293bc0349998853d6de8a9784ae9e54.png new file mode 100644 index 0000000000..22e72f5407 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-base-edit-access-b293bc0349998853d6de8a9784ae9e54.png differ diff --git a/packages/noco-docs/dist/assets/images/share-base-enable-public-access-70567245aad03d619b620d838cbdb21a.png b/packages/noco-docs/dist/assets/images/share-base-enable-public-access-70567245aad03d619b620d838cbdb21a.png new file mode 100644 index 0000000000..f6d4f9ac54 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-base-enable-public-access-70567245aad03d619b620d838cbdb21a.png differ diff --git a/packages/noco-docs/dist/assets/images/share-base-iframe-5cf906c782389e1cf39b132cd1ab62ac.png b/packages/noco-docs/dist/assets/images/share-base-iframe-5cf906c782389e1cf39b132cd1ab62ac.png new file mode 100644 index 0000000000..55353a55ce Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-base-iframe-5cf906c782389e1cf39b132cd1ab62ac.png differ diff --git a/packages/noco-docs/dist/assets/images/share-button-9751630544eab59c43f368bcbe4aaaae.png b/packages/noco-docs/dist/assets/images/share-button-9751630544eab59c43f368bcbe4aaaae.png new file mode 100644 index 0000000000..1387a535af Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-button-9751630544eab59c43f368bcbe4aaaae.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-22f8daabd281e5b6199d1e03ab814378.png b/packages/noco-docs/dist/assets/images/share-view-22f8daabd281e5b6199d1e03ab814378.png new file mode 100644 index 0000000000..f0ef0639ef Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-22f8daabd281e5b6199d1e03ab814378.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-form-d98371a23098e020e611302bcb5ebe40.png b/packages/noco-docs/dist/assets/images/share-view-form-d98371a23098e020e611302bcb5ebe40.png new file mode 100644 index 0000000000..360cce84bf Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-form-d98371a23098e020e611302bcb5ebe40.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-modal-2-4bb63f03e7cb528595d3f2f6335fca02.png b/packages/noco-docs/dist/assets/images/share-view-modal-2-4bb63f03e7cb528595d3f2f6335fca02.png new file mode 100644 index 0000000000..5582535fca Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-modal-2-4bb63f03e7cb528595d3f2f6335fca02.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-modal-2c40f95aa822fa2830e1f205431a4b4e.png b/packages/noco-docs/dist/assets/images/share-view-modal-2c40f95aa822fa2830e1f205431a4b4e.png new file mode 100644 index 0000000000..9517f02a95 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-modal-2c40f95aa822fa2830e1f205431a4b4e.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-modal-3-1202422c5c9bf2b234a5b5ed7a05e805.png b/packages/noco-docs/dist/assets/images/share-view-modal-3-1202422c5c9bf2b234a5b5ed7a05e805.png new file mode 100644 index 0000000000..d65edd5487 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-modal-3-1202422c5c9bf2b234a5b5ed7a05e805.png differ diff --git a/packages/noco-docs/dist/assets/images/share-view-password-8b55b2f905ed895f6ceddccad842c205.png b/packages/noco-docs/dist/assets/images/share-view-password-8b55b2f905ed895f6ceddccad842c205.png new file mode 100644 index 0000000000..23c3cd0bcf Binary files /dev/null and b/packages/noco-docs/dist/assets/images/share-view-password-8b55b2f905ed895f6ceddccad842c205.png differ diff --git a/packages/noco-docs/dist/assets/images/singlelinetext-b709b2cd21a07ff6f36b149d47091ca0.png b/packages/noco-docs/dist/assets/images/singlelinetext-b709b2cd21a07ff6f36b149d47091ca0.png new file mode 100644 index 0000000000..44ed64e044 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/singlelinetext-b709b2cd21a07ff6f36b149d47091ca0.png differ diff --git a/packages/noco-docs/dist/assets/images/singleselect-0d82c6b862285fa9b33214680b7e6787.png b/packages/noco-docs/dist/assets/images/singleselect-0d82c6b862285fa9b33214680b7e6787.png new file mode 100644 index 0000000000..d1ce230bb9 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/singleselect-0d82c6b862285fa9b33214680b7e6787.png differ diff --git a/packages/noco-docs/dist/assets/images/sort-1-fa0fe0c81f35a773f6c03ae98c05751f.png b/packages/noco-docs/dist/assets/images/sort-1-fa0fe0c81f35a773f6c03ae98c05751f.png new file mode 100644 index 0000000000..b34fff5f62 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/sort-1-fa0fe0c81f35a773f6c03ae98c05751f.png differ diff --git a/packages/noco-docs/dist/assets/images/sort-2-9b1d1e39e76dca86dbf63d9c4d59f940.png b/packages/noco-docs/dist/assets/images/sort-2-9b1d1e39e76dca86dbf63d9c4d59f940.png new file mode 100644 index 0000000000..35b3148aa4 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/sort-2-9b1d1e39e76dca86dbf63d9c4d59f940.png differ diff --git a/packages/noco-docs/dist/assets/images/sort-3-3b0cf33ff1728c5649bcf6de7a5073ff.png b/packages/noco-docs/dist/assets/images/sort-3-3b0cf33ff1728c5649bcf6de7a5073ff.png new file mode 100644 index 0000000000..abc8c5fca8 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/sort-3-3b0cf33ff1728c5649bcf6de7a5073ff.png differ diff --git a/packages/noco-docs/dist/assets/images/sort-4-124856ebba5f7b4ca9d8cc67ff97a32b.png b/packages/noco-docs/dist/assets/images/sort-4-124856ebba5f7b4ca9d8cc67ff97a32b.png new file mode 100644 index 0000000000..e211971269 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/sort-4-124856ebba5f7b4ca9d8cc67ff97a32b.png differ diff --git a/packages/noco-docs/dist/assets/images/specific-db-type-8f55b4cd889fbfd2d9a88abc8a4c2b97.png b/packages/noco-docs/dist/assets/images/specific-db-type-8f55b4cd889fbfd2d9a88abc8a4c2b97.png new file mode 100644 index 0000000000..31d0ef7f72 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/specific-db-type-8f55b4cd889fbfd2d9a88abc8a4c2b97.png differ diff --git a/packages/noco-docs/dist/assets/images/survey-form-ba422967e0b347d42b4824e8940b064c.png b/packages/noco-docs/dist/assets/images/survey-form-ba422967e0b347d42b4824e8940b064c.png new file mode 100644 index 0000000000..7d4d074873 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/survey-form-ba422967e0b347d42b4824e8940b064c.png differ diff --git a/packages/noco-docs/dist/assets/images/table-change-icon-baccebee8b06d0948a88ecfcb9b728db.png b/packages/noco-docs/dist/assets/images/table-change-icon-baccebee8b06d0948a88ecfcb9b728db.png new file mode 100644 index 0000000000..8793869a9e Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-change-icon-baccebee8b06d0948a88ecfcb9b728db.png differ diff --git a/packages/noco-docs/dist/assets/images/table-context-menu-4350d219274600ef6608abe0543fd679.png b/packages/noco-docs/dist/assets/images/table-context-menu-4350d219274600ef6608abe0543fd679.png new file mode 100644 index 0000000000..f9ec6e1655 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-context-menu-4350d219274600ef6608abe0543fd679.png differ diff --git a/packages/noco-docs/dist/assets/images/table-create-1-fcda48e93a1dad00916e3586cf48ceff.png b/packages/noco-docs/dist/assets/images/table-create-1-fcda48e93a1dad00916e3586cf48ceff.png new file mode 100644 index 0000000000..4ab38b4ff6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-create-1-fcda48e93a1dad00916e3586cf48ceff.png differ diff --git a/packages/noco-docs/dist/assets/images/table-create-2-146586847c4f16d9d1eba96debf53bce.png b/packages/noco-docs/dist/assets/images/table-create-2-146586847c4f16d9d1eba96debf53bce.png new file mode 100644 index 0000000000..a0ca29ae1f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-create-2-146586847c4f16d9d1eba96debf53bce.png differ diff --git a/packages/noco-docs/dist/assets/images/table-delete-67882c51f591ee24a8a664a1f56bfdb4.png b/packages/noco-docs/dist/assets/images/table-delete-67882c51f591ee24a8a664a1f56bfdb4.png new file mode 100644 index 0000000000..2bed1d5a8c Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-delete-67882c51f591ee24a8a664a1f56bfdb4.png differ diff --git a/packages/noco-docs/dist/assets/images/table-duplicate-63649061c6e13ea404b6d030f393b7ef.png b/packages/noco-docs/dist/assets/images/table-duplicate-63649061c6e13ea404b6d030f393b7ef.png new file mode 100644 index 0000000000..82f5033377 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-duplicate-63649061c6e13ea404b6d030f393b7ef.png differ diff --git a/packages/noco-docs/dist/assets/images/table-import-from-dashboard-625bb54d990e6d7a01ffd6bf9c7e8aa9.png b/packages/noco-docs/dist/assets/images/table-import-from-dashboard-625bb54d990e6d7a01ffd6bf9c7e8aa9.png new file mode 100644 index 0000000000..635669a34f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-import-from-dashboard-625bb54d990e6d7a01ffd6bf9c7e8aa9.png differ diff --git a/packages/noco-docs/dist/assets/images/table-import-from-sidebar-53e3a9f2cefcbc24681b88541f56dab5.png b/packages/noco-docs/dist/assets/images/table-import-from-sidebar-53e3a9f2cefcbc24681b88541f56dab5.png new file mode 100644 index 0000000000..f9d4e31c21 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-import-from-sidebar-53e3a9f2cefcbc24681b88541f56dab5.png differ diff --git a/packages/noco-docs/dist/assets/images/table-rename-61e86ff470760b4ac119d328ceb6e767.png b/packages/noco-docs/dist/assets/images/table-rename-61e86ff470760b4ac119d328ceb6e767.png new file mode 100644 index 0000000000..ae7ab507dc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-rename-61e86ff470760b4ac119d328ceb6e767.png differ diff --git a/packages/noco-docs/dist/assets/images/table-search-762c0ea68ae64bfda3aee882a82a326e.png b/packages/noco-docs/dist/assets/images/table-search-762c0ea68ae64bfda3aee882a82a326e.png new file mode 100644 index 0000000000..f70235c70e Binary files /dev/null and b/packages/noco-docs/dist/assets/images/table-search-762c0ea68ae64bfda3aee882a82a326e.png differ diff --git a/packages/noco-docs/dist/assets/images/time-e7719917464163b50837ace0db5619c0.png b/packages/noco-docs/dist/assets/images/time-e7719917464163b50837ace0db5619c0.png new file mode 100644 index 0000000000..62ec434508 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/time-e7719917464163b50837ace0db5619c0.png differ diff --git a/packages/noco-docs/dist/assets/images/ui-acl-52e141d26e976acba3a9e8591c59ea18.png b/packages/noco-docs/dist/assets/images/ui-acl-52e141d26e976acba3a9e8591c59ea18.png new file mode 100644 index 0000000000..ef95c1daa6 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/ui-acl-52e141d26e976acba3a9e8591c59ea18.png differ diff --git a/packages/noco-docs/dist/assets/images/upload-csv-1-5060880a942894e2cf7d72a27b048520.png b/packages/noco-docs/dist/assets/images/upload-csv-1-5060880a942894e2cf7d72a27b048520.png new file mode 100644 index 0000000000..f0b7446f0f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/upload-csv-1-5060880a942894e2cf7d72a27b048520.png differ diff --git a/packages/noco-docs/dist/assets/images/upload-csv-2-8d2bf537b779871fcd91d482507b6ec2.png b/packages/noco-docs/dist/assets/images/upload-csv-2-8d2bf537b779871fcd91d482507b6ec2.png new file mode 100644 index 0000000000..16ae9bac14 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/upload-csv-2-8d2bf537b779871fcd91d482507b6ec2.png differ diff --git a/packages/noco-docs/dist/assets/images/upload-csv-3-2b437b676c7ea55dfc099c630c62bc32.png b/packages/noco-docs/dist/assets/images/upload-csv-3-2b437b676c7ea55dfc099c630c62bc32.png new file mode 100644 index 0000000000..b0c85b04d3 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/upload-csv-3-2b437b676c7ea55dfc099c630c62bc32.png differ diff --git a/packages/noco-docs/dist/assets/images/upload-csv-url-e91498d1e314587238b1379f73bee6b1.png b/packages/noco-docs/dist/assets/images/upload-csv-url-e91498d1e314587238b1379f73bee6b1.png new file mode 100644 index 0000000000..e74f8d61fc Binary files /dev/null and b/packages/noco-docs/dist/assets/images/upload-csv-url-e91498d1e314587238b1379f73bee6b1.png differ diff --git a/packages/noco-docs/dist/assets/images/url-e3c332b08bb350cbbe1eb247f2c1de1e.png b/packages/noco-docs/dist/assets/images/url-e3c332b08bb350cbbe1eb247f2c1de1e.png new file mode 100644 index 0000000000..cafa73d84e Binary files /dev/null and b/packages/noco-docs/dist/assets/images/url-e3c332b08bb350cbbe1eb247f2c1de1e.png differ diff --git a/packages/noco-docs/dist/assets/images/view-change-icon-0aab6b0e9dc655406e8cfd2cee76454c.png b/packages/noco-docs/dist/assets/images/view-change-icon-0aab6b0e9dc655406e8cfd2cee76454c.png new file mode 100644 index 0000000000..7600bafbaa Binary files /dev/null and b/packages/noco-docs/dist/assets/images/view-change-icon-0aab6b0e9dc655406e8cfd2cee76454c.png differ diff --git a/packages/noco-docs/dist/assets/images/view-context-menu-2aaa116e512e31804a1c471b0af66371.png b/packages/noco-docs/dist/assets/images/view-context-menu-2aaa116e512e31804a1c471b0af66371.png new file mode 100644 index 0000000000..29e74b00d1 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/view-context-menu-2aaa116e512e31804a1c471b0af66371.png differ diff --git a/packages/noco-docs/dist/assets/images/webhook-list-2-1381dc40997897385408c827bacaa94b.png b/packages/noco-docs/dist/assets/images/webhook-list-2-1381dc40997897385408c827bacaa94b.png new file mode 100644 index 0000000000..450e01bda0 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/webhook-list-2-1381dc40997897385408c827bacaa94b.png differ diff --git a/packages/noco-docs/dist/assets/images/webhook-list-3-725c177d503d2d4fa90ec9599610c8e1.png b/packages/noco-docs/dist/assets/images/webhook-list-3-725c177d503d2d4fa90ec9599610c8e1.png new file mode 100644 index 0000000000..f7fefd5111 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/webhook-list-3-725c177d503d2d4fa90ec9599610c8e1.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-collaboration-acb162d8d579249744a6a2d6e3280fbf.png b/packages/noco-docs/dist/assets/images/workspace-collaboration-acb162d8d579249744a6a2d6e3280fbf.png new file mode 100644 index 0000000000..a232d9757b Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-collaboration-acb162d8d579249744a6a2d6e3280fbf.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-context-menu-6c2b64ca701e4c01ed8706bde7426f2d.png b/packages/noco-docs/dist/assets/images/workspace-context-menu-6c2b64ca701e4c01ed8706bde7426f2d.png new file mode 100644 index 0000000000..d8c4a57eb3 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-context-menu-6c2b64ca701e4c01ed8706bde7426f2d.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-create-1847b5a89de49a838a9ca1808e3ad934.png b/packages/noco-docs/dist/assets/images/workspace-create-1847b5a89de49a838a9ca1808e3ad934.png new file mode 100644 index 0000000000..d6bc3f22eb Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-create-1847b5a89de49a838a9ca1808e3ad934.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-create-2-b59c529fcc276d4b27996c2600b82420.png b/packages/noco-docs/dist/assets/images/workspace-create-2-b59c529fcc276d4b27996c2600b82420.png new file mode 100644 index 0000000000..fa626108af Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-create-2-b59c529fcc276d4b27996c2600b82420.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-delete-633e807f749c163f2604a8d3f83ba3ab.png b/packages/noco-docs/dist/assets/images/workspace-delete-633e807f749c163f2604a8d3f83ba3ab.png new file mode 100644 index 0000000000..59fa35f455 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-delete-633e807f749c163f2604a8d3f83ba3ab.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-delete-confirmation-c694a2202d07bd3c2d2875191402252d.png b/packages/noco-docs/dist/assets/images/workspace-delete-confirmation-c694a2202d07bd3c2d2875191402252d.png new file mode 100644 index 0000000000..cbe0d5485d Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-delete-confirmation-c694a2202d07bd3c2d2875191402252d.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-members-list-52e58f7e389b1a6840ce31a4a195104a.png b/packages/noco-docs/dist/assets/images/workspace-members-list-52e58f7e389b1a6840ce31a4a195104a.png new file mode 100644 index 0000000000..94ca675e9e Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-members-list-52e58f7e389b1a6840ce31a4a195104a.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-members-remove-70769f0f7d860d5436cd08030d0e26c2.png b/packages/noco-docs/dist/assets/images/workspace-members-remove-70769f0f7d860d5436cd08030d0e26c2.png new file mode 100644 index 0000000000..a12880531f Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-members-remove-70769f0f7d860d5436cd08030d0e26c2.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-members-role-change-be6445f0fa9629193ac81affb3b843f1.png b/packages/noco-docs/dist/assets/images/workspace-members-role-change-be6445f0fa9629193ac81affb3b843f1.png new file mode 100644 index 0000000000..bfc1c4e8b7 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-members-role-change-be6445f0fa9629193ac81affb3b843f1.png differ diff --git a/packages/noco-docs/dist/assets/images/workspace-rename-1a580f4e43ca597cc5b2205fbd9da98a.png b/packages/noco-docs/dist/assets/images/workspace-rename-1a580f4e43ca597cc5b2205fbd9da98a.png new file mode 100644 index 0000000000..0259bff0c3 Binary files /dev/null and b/packages/noco-docs/dist/assets/images/workspace-rename-1a580f4e43ca597cc5b2205fbd9da98a.png differ diff --git a/packages/noco-docs/dist/assets/js/006c1c22.c0ac510b.js b/packages/noco-docs/dist/assets/js/006c1c22.c0ac510b.js new file mode 100644 index 0000000000..bfdb4a1518 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/006c1c22.c0ac510b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1015],{40992:e=>{e.exports=JSON.parse('{"label":"Geometry","permalink":"/tags/geometry","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/custom-types/geometry","title":"Geometry","description":"This article explains how to create & work with a Geometry field.","permalink":"/fields/field-types/custom-types/geometry"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/00aa88f5.ece547d6.js b/packages/noco-docs/dist/assets/js/00aa88f5.ece547d6.js new file mode 100644 index 0000000000..5a03a12b53 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/00aa88f5.ece547d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1185],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),b=a,g=u["".concat(c,".").concat(b)]||u[b]||d[b]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=b;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const o={title:"In Open Source",description:"This article explains Account settings specifics in Open source NocoDB.",tags:["Account settings","Open Source"],keywords:["Account settings","Open Source"]},i=void 0,l={unversionedId:"account-settings/oss-specific-details",id:"account-settings/oss-specific-details",title:"In Open Source",description:"This article explains Account settings specifics in Open source NocoDB.",source:"@site/docs/140.account-settings/030.oss-specific-details.md",sourceDirName:"140.account-settings",slug:"/account-settings/oss-specific-details",permalink:"/account-settings/oss-specific-details",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/140.account-settings/030.oss-specific-details.md",tags:[{label:"Account settings",permalink:"/tags/account-settings"},{label:"Open Source",permalink:"/tags/open-source"}],version:"current",sidebarPosition:30,frontMatter:{title:"In Open Source",description:"This article explains Account settings specifics in Open source NocoDB.",tags:["Account settings","Open Source"],keywords:["Account settings","Open Source"]},sidebar:"tutorialSidebar",previous:{title:"API tokens",permalink:"/account-settings/api-tokens"},next:{title:"Architecture overview",permalink:"/engineering/architecture"}},c={},s=[{value:"Enable / Disable Signup",id:"enable--disable-signup",level:2},{value:"App Store",id:"app-store",level:2}],p={toc:s},u="wrapper";function d(e){let{components:t,...o}=e;return(0,a.kt)(u,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Some of the Account settings features are available only in Open Source NocoDB. This article explains details about such specifics."),(0,a.kt)("h2",{id:"enable--disable-signup"},"Enable / Disable Signup"),(0,a.kt)("p",null,"Signup without an invitation is disabled by default and can be managed from UI by a super admin."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Invite only signup",src:n(6340).Z,width:"2872",height:"890"})),(0,a.kt)("h2",{id:"app-store"},"App Store"),(0,a.kt)("p",null,"App store lists available integrations for NocoDB. You can install and configure these integrations from the App store."),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/e739a4b6-6ab6-4ee7-aac3-073d3aaf20ac",alt:"Screenshot 2023-08-22 at 5 02 26 PM"}),"\nWe provide different integrations in three main categories."),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Category"),(0,a.kt)("th",{parentName:"tr",align:null},"App Name"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Chat")),(0,a.kt)("td",{parentName:"tr",align:null},"Microsoft Teams ",(0,a.kt)("br",null)," Discord ",(0,a.kt)("br",null)," Twilio ",(0,a.kt)("br",null)," Whatsapp Twilio",(0,a.kt)("br",null)," Mattermost",(0,a.kt)("br",null)," Slack")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Email")),(0,a.kt)("td",{parentName:"tr",align:null},"SMTP",(0,a.kt)("br",null)," MailerSend",(0,a.kt)("br",null)," AWS SES")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"Storage")),(0,a.kt)("td",{parentName:"tr",align:null},"AWS S3 ",(0,a.kt)("br",null)," Minio ",(0,a.kt)("br",null)," Google Cloud Storage ",(0,a.kt)("br",null)," Spaces ",(0,a.kt)("br",null)," Backblaze B2 ",(0,a.kt)("br",null)," Vultr Object Storage ",(0,a.kt)("br",null)," OvhCloud Object Storage ",(0,a.kt)("br",null)," Linode Object Storage ",(0,a.kt)("br",null)," UpCloud Object Storage ",(0,a.kt)("br",null)," Scaleway Object Storage")))))}d.isMDXComponent=!0},6340:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/invite-only-sign-up-a9a36ba0e96b88ac229b92889b471ae9.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/013b8728.00dc75b7.js b/packages/noco-docs/dist/assets/js/013b8728.00dc75b7.js new file mode 100644 index 0000000000..bd2e3f4583 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/013b8728.00dc75b7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1371],{68542:t=>{t.exports=JSON.parse('{"label":"Productivity hacks","permalink":"/tags/productivity-hacks","allTagsPath":"/tags","count":2,"items":[{"id":"getting-started/keyboard-shortcuts","title":"Keyboard shortcuts","description":"Quick Actions","permalink":"/getting-started/keyboard-shortcuts"},{"id":"fields/multi-fields-editor","title":"Multi-field editor","description":"Understanding use of multi-field editor in NocoDB!","permalink":"/fields/multi-fields-editor"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/01865ba3.4549ac36.js b/packages/noco-docs/dist/assets/js/01865ba3.4549ac36.js new file mode 100644 index 0000000000..cb7bdd80f2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/01865ba3.4549ac36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[43],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var o=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function n(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=o.createContext({}),c=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},d=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(a),h=r,f=u["".concat(l,".").concat(h)]||u[h]||p[h]||i;return a?o.createElement(f,n(n({ref:t},d),{},{components:a})):o.createElement(f,n({ref:t},d))}));function f(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,n=new Array(i);n[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:r,n[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=a(87462),r=(a(67294),a(3905));const i={title:"Quick start",keywords:["NocoDB","quick start","getting started"]},n=void 0,s={unversionedId:"getting-started/quick-start",id:"getting-started/quick-start",title:"Quick start",description:"NocoDB offers you the flexibility of two distinct variants: self-hosted and SaaS (cloud-hosted). In this section, we'll walk you through the initial steps to embark on your NocoDB journey, whether you choose to set it up on your own infrastructure or opt for the convenience of our cloud-hosted service. Let's dive in and unlock the potential of NocoDB for your data management needs.",source:"@site/docs/020.getting-started/020.quick-start.md",sourceDirName:"020.getting-started",slug:"/getting-started/quick-start",permalink:"/getting-started/quick-start",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/020.quick-start.md",tags:[],version:"current",sidebarPosition:20,frontMatter:{title:"Quick start",keywords:["NocoDB","quick start","getting started"]},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/"},next:{title:"NocoDB terminologies",permalink:"/getting-started/terminologies"}},l={},c=[{value:"Self Hosted",id:"self-hosted",level:2},{value:"SaaS (Cloud Hosted)",id:"saas-cloud-hosted",level:2},{value:"Sign up for a NocoDB account",id:"sign-up-for-a-nocodb-account",level:3},{value:"Create another workspace",id:"create-another-workspace",level:3},{value:"Build a Base",id:"build-a-base",level:3},{value:"Create Tables",id:"create-tables",level:4},{value:"Add Fields",id:"add-fields",level:4},{value:"Establish Relationships with Links",id:"establish-relationships-with-links",level:4},{value:"Add Records",id:"add-records",level:4},{value:"Create views",id:"create-views",level:4},{value:"Connect your data sources",id:"connect-your-data-sources",level:4},{value:"Collaborate with your team",id:"collaborate-with-your-team",level:3}],d={toc:c},u="wrapper";function p(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,o.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"NocoDB offers you the flexibility of two distinct variants: self-hosted and SaaS (cloud-hosted). In this section, we'll walk you through the initial steps to embark on your NocoDB journey, whether you choose to set it up on your own infrastructure or opt for the convenience of our cloud-hosted service. Let's dive in and unlock the potential of NocoDB for your data management needs."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For this introductory guide, we suggest utilizing the hosted (SaaS) option. New users can take advantage of a complimentary trial period to explore the platform's features.")),(0,r.kt)("h2",{id:"self-hosted"},"Self Hosted"),(0,r.kt)("p",null,"When you opt for self-hosting, you gain the advantage of running an application on a server that you have direct control over. This grants you the flexibility to choose whether to host the database on your premises or within a server leased from a data center. In this self-administered arrangement, typically found on-premises, you assume full responsibility for the management and upkeep of your server. This level of control ensures that you have complete authority over all aspects of your data and services, eliminating any reliance on third-party service providers. This option is ideal for organizations that require a high degree of control over their data and services, but it does necessitate a higher level of technical expertise."),(0,r.kt)("p",null,"Setting up NocoDB on your own server is a straightforward process & the articles below will guide you through the steps to get started."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/getting-started/self-hosted/installation"},"Installation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/getting-started/self-hosted/environment-variables"},"Environment Variables")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/getting-started/self-hosted/upgrading"},"Upgrading"))),(0,r.kt)("h2",{id:"saas-cloud-hosted"},"SaaS (Cloud Hosted)"),(0,r.kt)("h3",{id:"sign-up-for-a-nocodb-account"},"Sign up for a NocoDB account"),(0,r.kt)("p",null,"To get started with NocoDB's cloud-hosted service, follow these steps to sign up for an account:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Visit the ",(0,r.kt)("a",{parentName:"li",href:"https://www.nocodb.com"},"NocoDB website"),"."),(0,r.kt)("li",{parentName:"ol"},'Click on the "Start For Free" button located in the top right corner.'),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"Sign Up")," using Google account. Alternatively, you can also sign up using your email address."),(0,r.kt)("li",{parentName:"ol"},"Check your email for a verification link and follow the instructions to verify your account.")),(0,r.kt)("p",null,"Once you've successfully signed up, you will land on the NocoDB dashboard with a default workspace created for you."),(0,r.kt)("h3",{id:"create-another-workspace"},"Create another workspace"),(0,r.kt)("p",null,"After signing up and logging in to your NocoDB account, a default workspace is automatically created for you. You can use this workspace or ",(0,r.kt)("a",{parentName:"p",href:"/workspaces/create-workspace"},"create a new one")," "),(0,r.kt)("p",null,"Your new workspace is now ready, and you can start building your base within it."),(0,r.kt)("h3",{id:"build-a-base"},"Build a Base"),(0,r.kt)("p",null,"Building a base in NocoDB is where you define the structure of your database, create tables to store your data, add fields to those tables, and establish relationships between tables using Links. This relational approach helps you organize and manage your data effectively, making it easier to work with complex datasets and build powerful applications. Add a ",(0,r.kt)("a",{parentName:"p",href:"/bases/create-base"},"new Base"),". Alternatively, you can also ",(0,r.kt)("a",{parentName:"p",href:"/bases/import-base-from-airtable"},"import existing base from Airtable")," as a NocoDB project in minutes."),(0,r.kt)("h4",{id:"create-tables"},"Create Tables"),(0,r.kt)("p",null,"Tables are where you store your data like a spreadsheet grid, with data arranged in rows & columns. Once the base is created, you can start ",(0,r.kt)("a",{parentName:"p",href:"/tables/create-table"},"adding new tables")," to it. You can also ",(0,r.kt)("a",{parentName:"p",href:"/tables/create-table-via-import"},"import existing structure data from a CSV, Excel, or JSON file")," to populate your tables. "),(0,r.kt)("h4",{id:"add-fields"},"Add Fields"),(0,r.kt)("p",null,"Within each table, ",(0,r.kt)("a",{parentName:"p",href:"/fields/fields-overview"},"define the fields")," that will hold your data. Fields are columnar data containers that hold a specific type of data. Fields can represent various types of information, such as text, numbers, dates, and more. You can find complete list of supported field types ",(0,r.kt)("a",{parentName:"p",href:"/fields/fields-overview"},"here"),"."),(0,r.kt)("p",null,"Use multi-fields editor to manage fields in bulk quickly - add fields, edit them, reorder, change visibility, reconfigure - all from one single window. ",(0,r.kt)("a",{parentName:"p",href:"/fields/multi-fields-editor"},"Read more"),". "),(0,r.kt)("h4",{id:"establish-relationships-with-links"},"Establish Relationships with Links"),(0,r.kt)("p",null,"One of NocoDB's powerful features is the ability to establish relationships between tables using ",(0,r.kt)("a",{parentName:"p",href:"/fields/field-types/links-based/links"},"Links"),'. Links enable you to connect related data across tables. For example, you can link "Tasks" to a specific "Project" by creating a Link field in the "Projects" table that points to the "Tasks" table.'),(0,r.kt)("h4",{id:"add-records"},"Add Records"),(0,r.kt)("p",null,"Once you have created tables and defined the necessary fields, it's time to start adding records to your base tables. Records are individual entries or rows within your tables, and they contain the actual data you want to store and manage. You can ",(0,r.kt)("a",{parentName:"p",href:"/records/create-record"},"add records manually")," or ",(0,r.kt)("a",{parentName:"p",href:"/tables/import-data-into-existing-table"},"upload existing data sets from CSV")," files."),(0,r.kt)("h4",{id:"create-views"},"Create views"),(0,r.kt)("p",null,"Views are customized ways of displaying your data. You can ",(0,r.kt)("a",{parentName:"p",href:"/views/create-view"},"create multiple views")," for each table in your base, and each view can have its own set of fields, filters, and layouts. NocoDB offers a variety of view types for custom display, including ",(0,r.kt)("a",{parentName:"p",href:"/views/view-types/grid"},"Grid"),", ",(0,r.kt)("a",{parentName:"p",href:"/views/view-types/kanban"},"Kanban"),", and ",(0,r.kt)("a",{parentName:"p",href:"/views/view-types/gallery"},"Gallery"),". If you are collecting data from a form, you can also create a ",(0,r.kt)("a",{parentName:"p",href:"/views/view-types/form"},"Form view")," to display the data in a form format. "),(0,r.kt)("h4",{id:"connect-your-data-sources"},"Connect your data sources"),(0,r.kt)("p",null,"Not just creating base & tables from the scratch, NocoDB also allows you to get started quickly by ",(0,r.kt)("a",{parentName:"p",href:"/data-sources/data-source-overview"},"connecting to your existing data sources")," & bring the comfort of spreadsheet UI to your data source. "),(0,r.kt)("h3",{id:"collaborate-with-your-team"},"Collaborate with your team"),(0,r.kt)("p",null,"NocoDB makes it easy to collaborate with your team members on your workspaces and bases. You can ",(0,r.kt)("a",{parentName:"p",href:"/collaboration/workspace-collaboration"},"invite team members to your workspace")," and ",(0,r.kt)("a",{parentName:"p",href:"/collaboration/base-collaboration"},"share your bases with them"),". You can also ",(0,r.kt)("a",{parentName:"p",href:"/roles-and-permissions/roles-permissions-overview"},"assign roles and permissions")," to your team members to control their access to your bases."),(0,r.kt)("p",null,"Want to share information publicly? You can ",(0,r.kt)("a",{parentName:"p",href:"/collaboration/share-base"},"create a public link to your base")," and share it with anyone. You can also ",(0,r.kt)("a",{parentName:"p",href:"/collaboration/share-base#embeddable-frame"},"embed your base")," on your website or blog."),(0,r.kt)("p",null,"That's it! You're now ready to harness the power of NocoDB for your data management needs."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/023320c3.23325e99.js b/packages/noco-docs/dist/assets/js/023320c3.23325e99.js new file mode 100644 index 0000000000..02ae9ae716 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/023320c3.23325e99.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1484],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var o=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=o.createContext({}),s=function(e){var t=o.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=s(e.components);return o.createElement(c.Provider,{value:t},e.children)},k="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),k=s(n),u=i,m=k["".concat(c,".").concat(u)]||k[u]||d[u]||a;return n?o.createElement(m,r(r({ref:t},p),{},{components:n})):o.createElement(m,r({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,r=new Array(a);r[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[k]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var o=n(87462),i=(n(67294),n(3905));const a={title:"API tokens",description:"This article explains how to create and work with API Tokens.",tags:["Account Settings","Api Tokens"],keywords:["api tokens","create api token","delete api token"]},r=void 0,l={unversionedId:"account-settings/api-tokens",id:"account-settings/api-tokens",title:"API tokens",description:"This article explains how to create and work with API Tokens.",source:"@site/docs/140.account-settings/020.api-tokens.md",sourceDirName:"140.account-settings",slug:"/account-settings/api-tokens",permalink:"/account-settings/api-tokens",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/140.account-settings/020.api-tokens.md",tags:[{label:"Account Settings",permalink:"/tags/account-settings"},{label:"Api Tokens",permalink:"/tags/api-tokens"}],version:"current",sidebarPosition:20,frontMatter:{title:"API tokens",description:"This article explains how to create and work with API Tokens.",tags:["Account Settings","Api Tokens"],keywords:["api tokens","create api token","delete api token"]},sidebar:"tutorialSidebar",previous:{title:"Profile page",permalink:"/account-settings/profile-page"},next:{title:"In Open Source",permalink:"/account-settings/oss-specific-details"}},c={},s=[{value:"Create API Token",id:"create-api-token",level:2},{value:"Delete API Token",id:"delete-api-token",level:2}],p={toc:s},k="wrapper";function d(e){let{components:t,...a}=e;return(0,i.kt)(k,(0,o.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"create-api-token"},"Create API Token"),(0,i.kt)("p",null,"Open Account Settings page from the user menu in the bottom left corner of the sidebar. "),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"User menu")," in the bottom left corner of the sidebar,"),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Account Settings")," from the dropdown")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"profile page",src:n(80992).Z,width:"2432",height:"1388"})),(0,i.kt)("p",null,"Follow the steps below to create API Token"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Tokens")," tab in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Account Settings")," page"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Add New API Token")),(0,i.kt)("li",{parentName:"ol"},"Enter the name for the API Token"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save")," button to save the changes")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create API Token",src:n(31725).Z,width:"2866",height:"1068"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create API Token",src:n(31220).Z,width:"2862",height:"1054"})),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"Only one token can be created per user")),(0,i.kt)("p",null,"API Token created will get added to the list. Copy API token by clicking on ",(0,i.kt)("inlineCode",{parentName:"p"},"Copy")," button displayed under ",(0,i.kt)("inlineCode",{parentName:"p"},"Actions")," menu"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Create API Token",src:n(70988).Z,width:"2870",height:"1050"})),(0,i.kt)("h2",{id:"delete-api-token"},"Delete API Token"),(0,i.kt)("p",null,"Open Account Settings page from the user menu in the bottom left corner of the sidebar."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"User menu")," in the bottom left corner of the sidebar,"),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Account Settings")," from the dropdown")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"profile page",src:n(80992).Z,width:"2432",height:"1388"})),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Tokens")," tab in the ",(0,i.kt)("inlineCode",{parentName:"li"},"Account Settings")," page"),(0,i.kt)("li",{parentName:"ol"},"From the ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," menu, click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete")," button associated with the API Token to be deleted")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Delete API Token",src:n(47996).Z,width:"2870",height:"1050"})),(0,i.kt)("admonition",{type:"warning"},(0,i.kt)("p",{parentName:"admonition"},"Note that, all the services using the API Token will stop working once the API Token is deleted.")))}d.isMDXComponent=!0},80992:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/account-settings-3f8b281c933be2349ddb19f0fa8660e8.png"},31725:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/api-token-1-6806c5ece8a92717e786e0fa4e824081.png"},31220:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/api-token-2-378e04140d53a68be86d17d3561c8591.png"},70988:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/api-token-3-493d6baa74b64ec5d6a00c20d6806fd4.png"},47996:(e,t,n)=>{n.d(t,{Z:()=>o});const o=n.p+"assets/images/api-token-4-1a6120f496ccdfca799987a4dc8f9027.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/037e2c34.f2700003.js b/packages/noco-docs/dist/assets/js/037e2c34.f2700003.js new file mode 100644 index 0000000000..55df6b09b7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/037e2c34.f2700003.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7820],{3905:(e,a,t)=>{t.d(a,{Zo:()=>d,kt:()=>m});var n=t(67294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var a=1;a=0||(r[t]=e[t]);return r}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=n.createContext({}),c=function(e){var a=n.useContext(s),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},d=function(e){var a=c(e.components);return n.createElement(s.Provider,{value:a},e.children)},b="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},h=n.forwardRef((function(e,a){var t=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),b=c(t),h=r,m=b["".concat(s,".").concat(h)]||b[h]||p[h]||o;return t?n.createElement(m,i(i({ref:a},d),{},{components:t})):n.createElement(m,i({ref:a},d))}));function m(e,a){var t=arguments,r=a&&a.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=h;var l={};for(var s in a)hasOwnProperty.call(a,s)&&(l[s]=a[s]);l.originalType=e,l[b]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{t.r(a),t.d(a,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var n=t(87462),r=(t(67294),t(3905));const o={title:"Share base",description:"Procedures to share a base publicly & generating embedded iframe",tags:["Collaboration","Bases","Share"],keywords:["NocoDB base","share base","base collaboration","base actions","base settings"]},i=void 0,l={unversionedId:"collaboration/share-base",id:"collaboration/share-base",title:"Share base",description:"Procedures to share a base publicly & generating embedded iframe",source:"@site/docs/120.collaboration/030.share-base.md",sourceDirName:"120.collaboration",slug:"/collaboration/share-base",permalink:"/collaboration/share-base",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/030.share-base.md",tags:[{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Bases",permalink:"/tags/bases"},{label:"Share",permalink:"/tags/share"}],version:"current",sidebarPosition:30,frontMatter:{title:"Share base",description:"Procedures to share a base publicly & generating embedded iframe",tags:["Collaboration","Bases","Share"],keywords:["NocoDB base","share base","base collaboration","base actions","base settings"]},sidebar:"tutorialSidebar",previous:{title:"Base collaboration",permalink:"/collaboration/base-collaboration"},next:{title:"Share view",permalink:"/collaboration/share-view"}},s={},c=[{value:"Modify Share base",id:"modify-share-base",level:2},{value:"Disable Share base",id:"disable-share-base",level:2},{value:"Share base Access Permissions",id:"share-base-access-permissions",level:2},{value:"Embeddable Frame",id:"embeddable-frame",level:2},{value:"Embed into application's HTML Body",id:"embed-into-applications-html-body",level:3}],d={toc:c},b="wrapper";function p(e){let{components:a,...o}=e;return(0,r.kt)(b,(0,n.Z)({},d,o,{components:a,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To share a base, follow the steps below:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Navigate to the top right corner of the top navigation bar and click on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Share")," button."),(0,r.kt)("li",{parentName:"ol"},"In the ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared base")," section, toggle the switch to ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public access")," in order to activate the shared base feature."),(0,r.kt)("li",{parentName:"ol"},"The generated link for the shared base will be displayed above and can be utilized to share this project with others. To copy the URL, simply click on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Copy Link")," option.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Share base",src:t(3132).Z,width:"3046",height:"994"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Share base",src:t(43320).Z,width:"2874",height:"1790"})),(0,r.kt)("h2",{id:"modify-share-base"},"Modify Share base"),(0,r.kt)("p",null,"Amending the ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," setting will render the previously generated ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," link invalid and generate a new link in its place.\nHere are the steps to modify it:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Share")," button located in the top right corner of the toolbar."),(0,r.kt)("li",{parentName:"ol"},"Toggle the option labeled ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public access")," to deactivate the base share."),(0,r.kt)("li",{parentName:"ol"},"Toggle the same option, ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public access,")," to reactivate the base share, subsequently generating a new link.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Enable public access",src:t(78830).Z,width:"2874",height:"1790"})),(0,r.kt)("h2",{id:"disable-share-base"},"Disable Share base"),(0,r.kt)("p",null,"Disabling ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," will render the previously generated ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," link invalid\nHere are the steps to disable it:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click on the 'Share' button located in the top right corner of the toolbar."),(0,r.kt)("li",{parentName:"ol"},"Toggle the option labeled ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public access")," to deactivate the base share.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Enable public access",src:t(78830).Z,width:"2874",height:"1790"})),(0,r.kt)("h2",{id:"share-base-access-permissions"},"Share base Access Permissions"),(0,r.kt)("p",null,'The "Shared base" can be configured in two modes:'),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("strong",{parentName:"li"},"Viewer")," - Users with the provided link will have ",(0,r.kt)("strong",{parentName:"li"},"read-only")," access to the base data."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("strong",{parentName:"li"},"Editor")," - Users with the provided link will have ",(0,r.kt)("strong",{parentName:"li"},"read and write")," access to the base data.")),(0,r.kt)("p",null,"Toggle ",(0,r.kt)("inlineCode",{parentName:"p"},"Enable Editor Access")," button to configure permissions as desired\n",(0,r.kt)("img",{alt:"Share base edit access",src:t(82630).Z,width:"2874",height:"1790"})),(0,r.kt)("h2",{id:"embeddable-frame"},"Embeddable Frame"),(0,r.kt)("p",null,"The NocoDB interface can be seamlessly integrated into existing applications through the utilization of the ",(0,r.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"},"HTML IFRAME")," attribute. This feature empowers users to embed the NocoDB interface into their applications, allowing for a unified user experience. To generate the embeddable HTML code, follow these steps:"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"To Generate Embeddable HTML Code:")),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click the ",(0,r.kt)("inlineCode",{parentName:"li"},"Share")," button located in the top right corner of the toolbar."),(0,r.kt)("li",{parentName:"ol"},"Within the ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared base link")," tab, select the button to copy the ",(0,r.kt)("inlineCode",{parentName:"li"},"Embeddable HTML code")," to your clipboard.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Share base iFrame",src:t(41464).Z,width:"2874",height:"1790"})),(0,r.kt)("p",null,"Example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-html"},'\n\n')),(0,r.kt)("h3",{id:"embed-into-applications-html-body"},"Embed into application's HTML Body"),(0,r.kt)("p",null,"Sample code with embedded iframe generated above"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-html"},'\n\n\n\n\n\n')))}p.isMDXComponent=!0},3132:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/share-base-1-b9c4bddb603c184a16da76c4e1e08edb.png"},43320:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/share-base-2-07354533111aa13a608996b10640f468.png"},82630:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/share-base-edit-access-b293bc0349998853d6de8a9784ae9e54.png"},78830:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/share-base-enable-public-access-70567245aad03d619b620d838cbdb21a.png"},41464:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/share-base-iframe-5cf906c782389e1cf39b132cd1ab62ac.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/03af2c79.3092a9bd.js b/packages/noco-docs/dist/assets/js/03af2c79.3092a9bd.js new file mode 100644 index 0000000000..6d1636c59a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/03af2c79.3092a9bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6570],{52806:e=>{e.exports=JSON.parse('{"label":"QR code","permalink":"/tags/qr-code","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/custom-types/QR-code","title":"QR code","description":"This article explains how to create & work with a QR code field.","permalink":"/fields/field-types/custom-types/QR-code"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/052736b6.c43758e0.js b/packages/noco-docs/dist/assets/js/052736b6.c43758e0.js new file mode 100644 index 0000000000..eb32e2f179 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/052736b6.c43758e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7657],{3905:(e,t,o)=>{o.d(t,{Zo:()=>k,kt:()=>u});var n=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function i(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function l(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var b=n.createContext({}),c=function(e){var t=n.useContext(b),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},k=function(e){var t=c(e.components);return n.createElement(b.Provider,{value:t},e.children)},p="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var o=e.components,a=e.mdxType,i=e.originalType,b=e.parentName,k=r(e,["components","mdxType","originalType","parentName"]),p=c(o),d=a,u=p["".concat(b,".").concat(d)]||p[d]||s[d]||i;return o?n.createElement(u,l(l({ref:t},k),{},{components:o})):n.createElement(u,l({ref:t},k))}));function u(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=o.length,l=new Array(i);l[0]=d;var r={};for(var b in t)hasOwnProperty.call(t,b)&&(r[b]=t[b]);r.originalType=e,r[p]="string"==typeof e?e:a,l[1]=r;for(var c=2;c{o.r(t),o.d(t,{assets:()=>b,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var n=o(87462),a=(o(67294),o(3905));const i={title:"Actions on webhook",description:"Learn how to enable/disable, duplicate and delete webhooks.",tags:["Webhook","Delete","Duplicate","Disable","Enable"],keywords:["Webhook overview","NocoDB webhook","create webhook","modify webhook","delete webhook"]},l=void 0,r={unversionedId:"automation/webhook/actions-on-webhook",id:"automation/webhook/actions-on-webhook",title:"Actions on webhook",description:"Learn how to enable/disable, duplicate and delete webhooks.",source:"@site/docs/130.automation/020.webhook/040.actions-on-webhook.md",sourceDirName:"130.automation/020.webhook",slug:"/automation/webhook/actions-on-webhook",permalink:"/automation/webhook/actions-on-webhook",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/130.automation/020.webhook/040.actions-on-webhook.md",tags:[{label:"Webhook",permalink:"/tags/webhook"},{label:"Delete",permalink:"/tags/delete"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Disable",permalink:"/tags/disable"},{label:"Enable",permalink:"/tags/enable"}],version:"current",sidebarPosition:40,frontMatter:{title:"Actions on webhook",description:"Learn how to enable/disable, duplicate and delete webhooks.",tags:["Webhook","Delete","Duplicate","Disable","Enable"],keywords:["Webhook overview","NocoDB webhook","create webhook","modify webhook","delete webhook"]},sidebar:"tutorialSidebar",previous:{title:"Create webhook",permalink:"/automation/webhook/create-webhook"},next:{title:"Profile page",permalink:"/account-settings/profile-page"}},b={},c=[{value:"Enable/disable Webhook",id:"enabledisable-webhook",level:3},{value:"Edit Webhook",id:"edit-webhook",level:3},{value:"Duplicate Webhook",id:"duplicate-webhook",level:3},{value:"Delete Webhook",id:"delete-webhook",level:3}],k={toc:c},p="wrapper";function s(e){let{components:t,...i}=e;return(0,a.kt)(p,(0,n.Z)({},k,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h3",{id:"enabledisable-webhook"},"Enable/disable Webhook"),(0,a.kt)("p",null,"To disable a Webhook"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Open ",(0,a.kt)("inlineCode",{parentName:"li"},"Webhook")," tab to find list of webhooks created"),(0,a.kt)("li",{parentName:"ul"},"Toggle ",(0,a.kt)("inlineCode",{parentName:"li"},"Activate")," button to enable/disable")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Webhook List",src:o(31218).Z,width:"2362",height:"1050"})),(0,a.kt)("h3",{id:"edit-webhook"},"Edit Webhook"),(0,a.kt)("p",null,"To edit a Webhook"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Open ",(0,a.kt)("inlineCode",{parentName:"li"},"Webhook")," tab to find list of webhooks created"),(0,a.kt)("li",{parentName:"ul"},"Click on webhook to be edited"),(0,a.kt)("li",{parentName:"ul"},"This will open up the webhook configuration page, which is similar to the page used for ",(0,a.kt)("a",{parentName:"li",href:"/automation/webhook/create-webhook"},"creating webhook"),". Reconfigure the webhook as required"),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Save")," button to save the changes")),(0,a.kt)("h3",{id:"duplicate-webhook"},"Duplicate Webhook"),(0,a.kt)("p",null,"To duplicate a Webhook"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Open ",(0,a.kt)("inlineCode",{parentName:"li"},"Webhook")," tab to find list of webhooks created"),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"...")," actions button associated with the webhook to be duplicate"),(0,a.kt)("li",{parentName:"ul"},"Select ",(0,a.kt)("inlineCode",{parentName:"li"},"Duplicate"))),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Webhook context menu",src:o(87210).Z,width:"2362",height:"1050"})),(0,a.kt)("p",null,"A copy of the webhook will be created (disabled by default) with a suffix ",(0,a.kt)("inlineCode",{parentName:"p"}," - Copy")),(0,a.kt)("h3",{id:"delete-webhook"},"Delete Webhook"),(0,a.kt)("p",null,"To delete a Webhook"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Open ",(0,a.kt)("inlineCode",{parentName:"li"},"Webhook")," tab to find list of webhooks created"),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"...")," actions button associated with the webhook to be deleted"),(0,a.kt)("li",{parentName:"ul"},"Select ",(0,a.kt)("inlineCode",{parentName:"li"},"Delete"))),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Webhook context menu",src:o(87210).Z,width:"2362",height:"1050"})))}s.isMDXComponent=!0},31218:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/webhook-list-2-1381dc40997897385408c827bacaa94b.png"},87210:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/webhook-list-3-725c177d503d2d4fa90ec9599610c8e1.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/052c7f5b.c97b212d.js b/packages/noco-docs/dist/assets/js/052c7f5b.c97b212d.js new file mode 100644 index 0000000000..f8065673fd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/052c7f5b.c97b212d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3595],{88739:e=>{e.exports=JSON.parse('{"label":"Number","permalink":"/tags/number","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/numerical/number","title":"Number","description":"This article explains how to create & work with a Number field.","permalink":"/fields/field-types/numerical/number"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0834b429.d504b7b1.js b/packages/noco-docs/dist/assets/js/0834b429.d504b7b1.js new file mode 100644 index 0000000000..e4af17bf44 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0834b429.d504b7b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1305],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=d(a),m=l,h=c["".concat(s,".").concat(m)]||c[m]||p[m]||i;return a?n.createElement(h,o(o({ref:t},u),{},{components:a})):n.createElement(h,o({ref:t},u))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,o=new Array(i);o[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:l,o[1]=r;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var n=a(87462),l=(a(67294),a(3905));const i={title:"Releases & builds",description:"NocoDB creates Docker and Binaries for each PR",tags:["Engineering"]},o=void 0,r={unversionedId:"engineering/builds-and-releases",id:"engineering/builds-and-releases",title:"Releases & builds",description:"NocoDB creates Docker and Binaries for each PR",source:"@site/docs/150.engineering/060.builds-and-releases.md",sourceDirName:"150.engineering",slug:"/engineering/builds-and-releases",permalink:"/engineering/builds-and-releases",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/060.builds-and-releases.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:60,frontMatter:{title:"Releases & builds",description:"NocoDB creates Docker and Binaries for each PR",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"Playwright E2E testing",permalink:"/engineering/playwright"},next:{title:"i18n translation",permalink:"/engineering/translation"}},s={},d=[{value:"Builds of NocoDB",id:"builds-of-nocodb",level:2},{value:"Release builds",id:"release-builds",level:2},{value:"How to make a release build ?",id:"how-to-make-a-release-build--",level:3},{value:"Tagging",id:"tagging",level:3},{value:"Case 1: Leaving inputs blank",id:"case-1-leaving-inputs-blank",level:3},{value:"Case 2: Manually Input",id:"case-2-manually-input",level:3},{value:"How does release action work ?",id:"how-does-release-action-work-",level:3},{value:"validate-branch",id:"validate-branch",level:4},{value:"process-input",id:"process-input",level:4},{value:"pr-to-master",id:"pr-to-master",level:4},{value:"release-npm",id:"release-npm",level:4},{value:"release-draft-note",id:"release-draft-note",level:4},{value:"release-docker",id:"release-docker",level:4},{value:"close-issues",id:"close-issues",level:4},{value:"publish-docs",id:"publish-docs",level:4},{value:"update-sdk-path",id:"update-sdk-path",level:4},{value:"sync-to-develop",id:"sync-to-develop",level:4},{value:"Daily builds",id:"daily-builds",level:2},{value:"What are daily builds ?",id:"what-are-daily-builds-",level:3},{value:"Docker images",id:"docker-images",level:3},{value:"Timely builds",id:"timely-builds",level:2},{value:"What are timely builds ?",id:"what-are-timely-builds-",level:3},{value:"Docker images",id:"docker-images-1",level:3},{value:"Executables or Binaries",id:"executables-or-binaries",level:2}],u={toc:d},c="wrapper";function p(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"builds-of-nocodb"},"Builds of NocoDB"),(0,l.kt)("p",null,"There are 3 kinds of docker builds in NocoDB"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Release builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb"},"nocodb/nocodb")," : built during NocoDB release. "),(0,l.kt)("li",{parentName:"ul"},"Daily builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-daily"},"nocodb/nocodb-daily")," : built every 6 hours from Develop branch."),(0,l.kt)("li",{parentName:"ul"},"Timely builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-timely"},"nocodb/nocodb-timely"),": built for every PR and manually triggered PRs.")),(0,l.kt)("p",null,"Below is an overview of how to make these builds and what happens behind the scenes."),(0,l.kt)("h2",{id:"release-builds"},"Release builds"),(0,l.kt)("h3",{id:"how-to-make-a-release-build--"},"How to make a release build ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Click ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/actions/workflows/release-nocodb.yml"},"NocoDB release action"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"You should see the below screen"),(0,l.kt)("p",{parentName:"li"},(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167240353-a02f690f-c865-4ade-8645-64382405c9ea.png",alt:"image"}))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Change ",(0,l.kt)("inlineCode",{parentName:"p"},"Use workflow from")," to ",(0,l.kt)("inlineCode",{parentName:"p"},"Branch: master"),". If you choose the wrong branch, the workflow will be ended."),(0,l.kt)("p",{parentName:"li"},(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167240383-dda05f76-8323-4f4a-b3e7-9db886dbd68d.png",alt:"image"}))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Then there would be two cases - you can either leave target tag and pervious tag blank or manually input some values")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Target Tag means the target deployment version, while Previous Tag means the latest version as of now. Previous Tag is used for Release Note only - showing the file / commit differences between two tags."))),(0,l.kt)("h3",{id:"tagging"},"Tagging"),(0,l.kt)("p",null,"The naming convention would be following given the actual release tag is ",(0,l.kt)("inlineCode",{parentName:"p"},"0.100.0")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.0")," (first version of pre-release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.1")," (include bug fix changes on top of the previous version)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.2"),"(include bug fix changes on top of the previous version)"),(0,l.kt)("li",{parentName:"ul"},"and so on ..."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0")," (actual release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.1")," (minor bug fix release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.2")," (minor bug fix release)")),(0,l.kt)("h3",{id:"case-1-leaving-inputs-blank"},"Case 1: Leaving inputs blank"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If Previous Tag is blank, then the value will be fetched from ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/latest"},"latest")),(0,l.kt)("li",{parentName:"ul"},"If Target Tag is blank, then the value will be Previous Tag plus one. Example: 0.90.11 (Previous Tag) + 0.0.1 = 0.90.12 (Target Tag)")),(0,l.kt)("h3",{id:"case-2-manually-input"},"Case 2: Manually Input"),(0,l.kt)("p",null,"Why? Sometimes we may mess up in NPM deployment. As NPM doesn't allow us to redeploy to the same tag again, in this case we cannot just use the previous tag + 1. Therefore, we need to use previous tag + 2 instead and we manually configure it."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"After that, click ",(0,l.kt)("inlineCode",{parentName:"li"},"Run workflow")," to start"),(0,l.kt)("li",{parentName:"ul"},"You can see Summary for the overall job status."),(0,l.kt)("li",{parentName:"ul"},"Once ",(0,l.kt)("inlineCode",{parentName:"li"},"release-draft-note")," and ",(0,l.kt)("inlineCode",{parentName:"li"},"release-executables")," is finished, then go to ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases"},"releases"),", edit the draft note and save as draft for time being.",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Example: Adding header, update content if necessary, and click ",(0,l.kt)("inlineCode",{parentName:"li"},"Auto-generate release notes")," to include more info."))),(0,l.kt)("li",{parentName:"ul"},"Once ",(0,l.kt)("inlineCode",{parentName:"li"},"release-docker")," is finished, then test it locally first. You'll be expected to see ",(0,l.kt)("inlineCode",{parentName:"li"},"Upgrade Available")," notification in UI as we haven't published the release note. (the version is retrieved from there)"),(0,l.kt)("li",{parentName:"ul"},"Once everything is finished, then publish the release note and the deployment is considered as DONE.")),(0,l.kt)("h3",{id:"how-does-release-action-work-"},"How does release action work ?"),(0,l.kt)("h4",{id:"validate-branch"},"validate-branch"),(0,l.kt)("p",null,"To check if ",(0,l.kt)("inlineCode",{parentName:"p"},"github.ref")," is master. Otherwise, other branches will be not accepted."),(0,l.kt)("h4",{id:"process-input"},"process-input"),(0,l.kt)("p",null,"To enrich target tag or previous tag if necessary."),(0,l.kt)("h4",{id:"pr-to-master"},"pr-to-master"),(0,l.kt)("p",null,"Automate a PR from develop to master branch so that we know the actual differences between the previous tag and the current tag. We choose master branch for a deployment base."),(0,l.kt)("h4",{id:"release-npm"},"release-npm"),(0,l.kt)("p",null,"Build frontend and backend and release them to NPM. The changes during built such as version bumping will be committed and pushed to a temporary branch and an automated PR will be created and merged to master branch."),(0,l.kt)("p",null,"Note that once you publish with a certain tag, you cannot publish with the same tag again."),(0,l.kt)("h4",{id:"release-draft-note"},"release-draft-note"),(0,l.kt)("p",null,"Generate a draft release note. Some actions need to be done after this step."),(0,l.kt)("h4",{id:"release-docker"},"release-docker"),(0,l.kt)("p",null,"Build docker image and publish it to Docker Hub. It may take around 15 - 30 mins."),(0,l.kt)("h4",{id:"close-issues"},"close-issues"),(0,l.kt)("p",null,"Open issues marked with label ",(0,l.kt)("inlineCode",{parentName:"p"},"Status: Fixed")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"Status: Resolved")," will be closed by bot automatically with comment mentioning the fix is included in which version."),(0,l.kt)("p",null,"Example:"),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167241574-f8f7061f-c689-444a-b761-0a727974c53f.png",alt:"image"})),(0,l.kt)("h4",{id:"publish-docs"},"publish-docs"),(0,l.kt)("p",null,"Publish Documentations"),(0,l.kt)("h4",{id:"update-sdk-path"},"update-sdk-path"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"nocodb-sdk")," is used in frontend and backend. However, in develop branch, the value would be ",(0,l.kt)("inlineCode",{parentName:"p"},"file:../nocodb-sdk")," for development purpose (so that the changes done in nocodb-sdk in develop will be included in frontend and backend). During the deployment, the value will be changed to the target tag. This job is to update them back."),(0,l.kt)("h4",{id:"sync-to-develop"},"sync-to-develop"),(0,l.kt)("p",null,"Once the deployment is finished, there would be some new changes being pushed to master branch. This job is to sync the changes back to develop so that both branch won't have any difference."),(0,l.kt)("h2",{id:"daily-builds"},"Daily builds"),(0,l.kt)("h3",{id:"what-are-daily-builds-"},"What are daily builds ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"NocoDB creates every 6 hours from develop branches and publishes as nocodb/nocodb-daily"),(0,l.kt)("li",{parentName:"ul"},"This is so that we can easily try what is in the develop branch easily.")),(0,l.kt)("h3",{id:"docker-images"},"Docker images"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The docker images will be built and pushed to Docker Hub (See ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-daily/tags"},"nocodb/nocodb-daily")," for the full list). ")),(0,l.kt)("h2",{id:"timely-builds"},"Timely builds"),(0,l.kt)("h3",{id:"what-are-timely-builds-"},"What are timely builds ?"),(0,l.kt)("p",null,"NocoDB has github actions which creates docker and binaries for each PR! And these can be found as a ",(0,l.kt)("strong",{parentName:"p"},"comment on the last commit")," of the PR. "),(0,l.kt)("p",null,"Example shown below"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Go to a PR and click on the comment."),(0,l.kt)("img",{width:"1111",alt:"Screenshot 2023-01-23 at 15 46 36",src:"https://user-images.githubusercontent.com/5435402/214083736-80062398-3712-430f-9865-86b110090c91.png"})),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Click on the link to copy the docker image and run it locally."),(0,l.kt)("img",{width:"1231",alt:"Screenshot 2023-01-23 at 15 46 55",src:"https://user-images.githubusercontent.com/5435402/214083755-945d9485-2b9e-4739-8408-068bdf4a84b7.png"}))),(0,l.kt)("p",null,"This is to"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"reduce pull request cycle time"),(0,l.kt)("li",{parentName:"ul"},"allow issue reporters / reviewers to verify the fix without setting up their local machines")),(0,l.kt)("h3",{id:"docker-images-1"},"Docker images"),(0,l.kt)("p",null,"When a non-draft Pull Request is created, reopened or synchronized, a timely build for Docker would be triggered for the changes only included in the following paths."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nocodb-sdk/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nc-gui/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nc-plugin/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nocodb/**"))),(0,l.kt)("p",null,"The docker images will be built and pushed to Docker Hub (See ",(0,l.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/nocodb/nocodb-timely/tags"},"nocodb/nocodb-timely")," for the full list). Once the image is ready, Github bot will add a comment with the command in the pull request. The tag would be ",(0,l.kt)("inlineCode",{parentName:"p"},"-pr---"),"."),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/175012097-240dab05-da93-4c4e-87c1-1c36fb1350bd.png",alt:"image"})),(0,l.kt)("h2",{id:"executables-or-binaries"},"Executables or Binaries"),(0,l.kt)("p",null,"Similarly, we provide a timely build for executables for non-docker users. The source code will be built, packaged as binary files, and pushed to Github (See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb-timely/releases"},"nocodb/nocodb-timely")," for the full list)."),(0,l.kt)("p",null,"Currently, we only support the following targets:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-linux-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-macos-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-win-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-linux-x64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-macos-x64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-win-x64"))),(0,l.kt)("p",null,"Once the executables are ready, Github bot will add a comment with the commands in the pull request."),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/175012070-f5f3e7b8-6dc5-4d1c-9f7e-654bc5039521.png",alt:"image"})),(0,l.kt)("p",null,"NocoDB creates Docker and Binaries for each PR."),(0,l.kt)("p",null,"This is to"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"reduce pull request cycle time"),(0,l.kt)("li",{parentName:"ul"},"allow issue reporters / reviewers to verify the fix without setting up their local machines")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0908b333.4c4be206.js b/packages/noco-docs/dist/assets/js/0908b333.4c4be206.js new file mode 100644 index 0000000000..6e78b43ebf --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0908b333.4c4be206.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6187],{3905:(e,r,t)=>{t.d(r,{Zo:()=>p,kt:()=>m});var i=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function n(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=i.createContext({}),d=function(e){var r=i.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):n(n({},r),e)),t},p=function(e){var r=d(e.components);return i.createElement(s.Provider,{value:r},e.children)},c="mdxType",w={inlineCode:"code",wrapper:function(e){var r=e.children;return i.createElement(i.Fragment,{},r)}},v=i.forwardRef((function(e,r){var t=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(t),v=a,m=c["".concat(s,".").concat(v)]||c[v]||w[v]||o;return t?i.createElement(m,n(n({ref:r},p),{},{components:t})):i.createElement(m,n({ref:r},p))}));function m(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=t.length,n=new Array(o);n[0]=v;var l={};for(var s in r)hasOwnProperty.call(r,s)&&(l[s]=r[s]);l.originalType=e,l[c]="string"==typeof e?e:a,n[1]=l;for(var d=2;d{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>n,default:()=>w,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var i=t(87462),a=(t(67294),t(3905));const o={title:"Grid",description:"Learn how to work with grid view in NocoDB.",tags:["Views","Grid view"],keywords:["NocoDB grid","grid view","grid"]},n=void 0,l={unversionedId:"views/view-types/grid",id:"views/view-types/grid",title:"Grid",description:"Learn how to work with grid view in NocoDB.",source:"@site/docs/090.views/040.view-types/010.grid.md",sourceDirName:"090.views/040.view-types",slug:"/views/view-types/grid",permalink:"/views/view-types/grid",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/040.view-types/010.grid.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:10,frontMatter:{title:"Grid",description:"Learn how to work with grid view in NocoDB.",tags:["Views","Grid view"],keywords:["NocoDB grid","grid view","grid"]},sidebar:"tutorialSidebar",previous:{title:"Share view",permalink:"/views/share-view"},next:{title:"Gallery",permalink:"/views/view-types/gallery"}},s={},d=[{value:"Grid View Actions",id:"grid-view-actions",level:2},{value:"Grid View Operations",id:"grid-view-operations",level:2},{value:"Grid View Record Operations",id:"grid-view-record-operations",level:2},{value:"Related articles",id:"related-articles",level:2}],p={toc:d},c="wrapper";function w(e){let{components:r,...o}=e;return(0,a.kt)(c,(0,i.Z)({},p,o,{components:r,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Grid View, as a default type of view, allows you to display your data in a spreadsheet-like interface using rows and columns. Rows are as referred to as records and columns as fields in NocoDB."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"1010-2 Grid",src:t(47546).Z,width:"2880",height:"1800"})),(0,a.kt)("p",null,"Grid view is the default view type for all tables. This view type is ideal for viewing and editing data in a spreadsheet-like interface. You can also perform various operations on the grid view, such as sorting, filtering, grouping, and searching. You can also export the data in the grid view to CSV or Excel format. This section will cover all the operations that can be performed on the grid view."),(0,a.kt)("h2",{id:"grid-view-actions"},"Grid View Actions"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/create-view/#create-new-view"},"Create a New Grid View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#rename-view"},"Rename an Existing Grid View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#duplicate-view"},"Duplicate a Grid View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#delete-view"},"Remove a Grid View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/share-view"},"Share a Grid View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/views-overview#view-permission-types"},"Lock Grid View for Edits"))),(0,a.kt)("h2",{id:"grid-view-operations"},"Grid View Operations"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/field-operations#rearranging-fields"},"Rearrange Fields Within the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/field-operations#showhide-fields"},"Show or Hide Fields Within the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/filter"},"Apply Filters to Display Specific Records on the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/sort"},"Sort Records on the Grid by One or More Criteria")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/group-by"},"Group Records Horizontally on the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/search"},"Search for Specific Data Within Fields")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/download#download-data"},"Export Data to CSV or Excel Format")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/row-height"},"Adjust Record Height on the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/fields/actions-on-field"},"Customize Field Width")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/table-operations/field-operations#showhide-fields"},"Toggle Field Visibility on the Grid"))),(0,a.kt)("h2",{id:"grid-view-record-operations"},"Grid View Record Operations"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/records/create-record"},"Add a New Record to the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/records/actions-on-record#row-edit"},"Edit an Existing Record on the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/records/actions-on-record#delete-record-single"},"Delete a Single Record from the Grid")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/records/actions-on-record#delete-record-bulk"},"Delete Multiple Records in Bulk from the Grid"))),(0,a.kt)("h2",{id:"related-articles"},"Related articles"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/views/view-types/gallery"},"Gallery View"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"/views/view-types/form"},"Form View"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"/views/view-types/kanban"},"Kanban View")))}w.isMDXComponent=!0},47546:(e,r,t)=>{t.d(r,{Z:()=>i});const i=t.p+"assets/images/grid-a278b184ce772b6c7263abc105f09a76.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0938fe36.9d5f346a.js b/packages/noco-docs/dist/assets/js/0938fe36.9d5f346a.js new file mode 100644 index 0000000000..71af4ea74d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0938fe36.9d5f346a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7075],{36171:e=>{e.exports=JSON.parse('{"label":"Expanded record","permalink":"/tags/expanded-record","allTagsPath":"/tags","count":1,"items":[{"id":"records/expand-record","title":"Expanded record","description":"Learn how to expand a record & work with it in NocoDB.","permalink":"/records/expand-record"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/09ceb1a0.051f7a95.js b/packages/noco-docs/dist/assets/js/09ceb1a0.051f7a95.js new file mode 100644 index 0000000000..f69cc8bbb2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/09ceb1a0.051f7a95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4936],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var r=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),s=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=s(e.components);return r.createElement(c.Provider,{value:n},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),d=s(t),m=o,g=d["".concat(c,".").concat(m)]||d[m]||u[m]||i;return t?r.createElement(g,l(l({ref:n},p),{},{components:t})):r.createElement(g,l({ref:n},p))}));function g(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,l=new Array(i);l[0]=m;var a={};for(var c in n)hasOwnProperty.call(n,c)&&(a[c]=n[c]);a.originalType=e,a[d]="string"==typeof e?e:o,l[1]=a;for(var s=2;s{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>s});var r=t(87462),o=(t(67294),t(3905));const i={title:"Development Setup",description:"How to set-up your development environment"},l=void 0,a={unversionedId:"engineering/development-setup",id:"version-0.109.7/engineering/development-setup",title:"Development Setup",description:"How to set-up your development environment",source:"@site/versioned_docs/version-0.109.7/050.engineering/030.development-setup.md",sourceDirName:"050.engineering",slug:"/engineering/development-setup",permalink:"/0.109.7/engineering/development-setup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/030.development-setup.md",tags:[],version:"0.109.7",sidebarPosition:30,frontMatter:{title:"Development Setup",description:"How to set-up your development environment"},sidebar:"tutorialSidebar",previous:{title:"Repository structure",permalink:"/0.109.7/engineering/repository-structure"},next:{title:"Writing Unit Tests",permalink:"/0.109.7/engineering/unit-testing"}},c={},s=[{value:"Clone the repo",id:"clone-the-repo",level:2},{value:"Build SDK",id:"build-sdk",level:2},{value:"Build Backend",id:"build-backend",level:2},{value:"Build Frontend",id:"build-frontend",level:2},{value:"Enabling CI-CD for Draft PR",id:"enabling-ci-cd-for-draft-pr",level:2},{value:"Accessing CI-CD Failure Screenshots",id:"accessing-ci-cd-failure-screenshots",level:2},{value:"Accessing 'Easter egg' menu",id:"accessing-easter-egg-menu",level:2}],p={toc:s},d="wrapper";function u(e){let{components:n,...t}=e;return(0,o.kt)(d,(0,r.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"clone-the-repo"},"Clone the repo"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/packages\n")),(0,o.kt)("h2",{id:"build-sdk"},"Build SDK"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"# build nocodb-sdk\ncd nocodb-sdk\nnpm install\nnpm run build\n")),(0,o.kt)("h2",{id:"build-backend"},"Build Backend"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"# build backend - runs on port 8080\ncd ../nocodb\nnpm install\nnpm run watch:run\n")),(0,o.kt)("h2",{id:"build-frontend"},"Build Frontend"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"# build frontend - runs on port 3000\ncd ../nc-gui\nnpm install\nnpm run dev \n")),(0,o.kt)("p",null,"Any changes made to frontend and backend will be automatically reflected in the browser."),(0,o.kt)("h2",{id:"enabling-ci-cd-for-draft-pr"},"Enabling CI-CD for Draft PR"),(0,o.kt)("p",null,"CI-CD will be triggered on moving a PR from draft state to ",(0,o.kt)("inlineCode",{parentName:"p"},"Ready for review")," state & on pushing changes to ",(0,o.kt)("inlineCode",{parentName:"p"},"Develop"),". To verify CI-CD before requesting for review, add label ",(0,o.kt)("inlineCode",{parentName:"p"},"trigger-CI")," on Draft PR. "),(0,o.kt)("h2",{id:"accessing-ci-cd-failure-screenshots"},"Accessing CI-CD Failure Screenshots"),(0,o.kt)("p",null,"For Playwright tests, screenshots are captured on the tests. These will provide vital clues for debugging possible issues observed in CI-CD. To access screenshots, Open link associated with CI-CD run & click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Artifacts")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/192965070-dc04b952-70fb-4197-b4bd-ca7eda066e60.png",alt:"Screenshot 2022-09-29 at 12 43 37 PM"})),(0,o.kt)("h2",{id:"accessing-easter-egg-menu"},"Accessing 'Easter egg' menu"),(0,o.kt)("p",null,"Double click twice on empty space between ",(0,o.kt)("inlineCode",{parentName:"p"},"View list")," & ",(0,o.kt)("inlineCode",{parentName:"p"},"Share")," button to the left top of Grid view; following options become accessible"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Export Cache"),(0,o.kt)("li",{parentName:"ol"},"Delete Cache"),(0,o.kt)("li",{parentName:"ol"},"Debug Meta"),(0,o.kt)("li",{parentName:"ol"},"Toggle Beta Features")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/fe2765fa-5796-4d26-8c12-e71b8226872e",alt:"Screenshot 2023-05-23 at 8 35 14 PM"})))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0a7c5cbc.cdcb8e4d.js b/packages/noco-docs/dist/assets/js/0a7c5cbc.cdcb8e4d.js new file mode 100644 index 0000000000..683d4694a6 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0a7c5cbc.cdcb8e4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[809],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>c});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),u=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=u(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=u(r),m=n,c=p["".concat(s,".").concat(m)]||p[m]||f[m]||i;return r?a.createElement(c,l(l({ref:t},d),{},{components:r})):a.createElement(c,l({ref:t},d))}));function c(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:n,l[1]=o;for(var u=2;u{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>f,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var a=r(87462),n=(r(67294),r(3905));const i={title:"Formula",description:"This article explains how to create & work with a Formula field.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field"]},l=void 0,o={unversionedId:"fields/field-types/formula/formula",id:"fields/field-types/formula/formula",title:"Formula",description:"This article explains how to create & work with a Formula field.",source:"@site/docs/070.fields/040.field-types/060.formula/010.formula.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/formula",permalink:"/fields/field-types/formula/formula",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/010.formula.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"}],version:"current",sidebarPosition:10,frontMatter:{title:"Formula",description:"This article explains how to create & work with a Formula field.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field"]},sidebar:"tutorialSidebar",previous:{title:"JSON",permalink:"/fields/field-types/custom-types/json"},next:{title:"Numeric and Logical Operators",permalink:"/fields/field-types/formula/operators"}},s={},u=[{value:"Create a formula field",id:"create-a-formula-field",level:2},{value:"Supported formula functions",id:"supported-formula-functions",level:2}],d={toc:u},p="wrapper";function f(e){let{components:t,...i}=e;return(0,n.kt)(p,(0,a.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"create-a-formula-field"},"Create a formula field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Formula")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Insert required formula "),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:r(43369).Z,width:"2880",height:"1800"})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"You can use explicit numerical values/ strings as needed, e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},"123")," (numeric) or ",(0,n.kt)("inlineCode",{parentName:"li"},'"123"')," (string)."),(0,n.kt)("li",{parentName:"ul"},"You can reference field names in equation with ",(0,n.kt)("inlineCode",{parentName:"li"},"{}"),", e.g. ",(0,n.kt)("inlineCode",{parentName:"li"},"{field name}")),(0,n.kt)("li",{parentName:"ul"},"Nested formula (formula equation referring to another formula field) is supported"))),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"Unlike other field types, formula cells cannot be modified by double-clicking since the value is generated based on the formula."),(0,n.kt)("img",{width:"253",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189109486-4d41f2b7-0a19-46ef-8bb4-a8d1aabd3592.png"})),(0,n.kt)("h2",{id:"supported-formula-functions"},"Supported formula functions"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/operators"},"Numeric and Logical Operators")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/numeric-functions"},"Numeric Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/string-functions"},"String Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/date-functions"},"Date Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/conditional-expressions"},"Conditional Expressions"))))}f.isMDXComponent=!0},43369:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/formula-f6e9e22e90579dd9f7307338dde8ec07.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0ac1e38e.79289da6.js b/packages/noco-docs/dist/assets/js/0ac1e38e.79289da6.js new file mode 100644 index 0000000000..7fbda23273 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0ac1e38e.79289da6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5305],{3905:(t,e,n)=>{n.d(e,{Zo:()=>s,kt:()=>c});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e=1;e=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var o=r.createContext({}),p=function(t){var e=r.useContext(o),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},s=function(t){var e=p(t.components);return r.createElement(o.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},f=r.forwardRef((function(t,e){var n=t.components,a=t.mdxType,l=t.originalType,o=t.parentName,s=d(t,["components","mdxType","originalType","parentName"]),m=p(n),f=a,c=m["".concat(o,".").concat(f)]||m[f]||u[f]||l;return n?r.createElement(c,i(i({ref:e},s),{},{components:n})):r.createElement(c,i({ref:e},s))}));function c(t,e){var n=arguments,a=e&&e.mdxType;if("string"==typeof t||a){var l=n.length,i=new Array(l);i[0]=f;var d={};for(var o in e)hasOwnProperty.call(e,o)&&(d[o]=e[o]);d.originalType=t,d[m]="string"==typeof t?t:a,i[1]=d;for(var p=2;p{n.r(e),n.d(e,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var r=n(87462),a=(n(67294),n(3905));const l={title:"String functions",description:"This article explains various string functions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","String functions"]},i=void 0,d={unversionedId:"fields/field-types/formula/string-functions",id:"fields/field-types/formula/string-functions",title:"String functions",description:"This article explains various string functions that can be used in formula fields.",source:"@site/docs/070.fields/040.field-types/060.formula/030.string-functions.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/string-functions",permalink:"/fields/field-types/formula/string-functions",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/030.string-functions.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"}],version:"current",sidebarPosition:30,frontMatter:{title:"String functions",description:"This article explains various string functions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","String functions"]},sidebar:"tutorialSidebar",previous:{title:"Numeric functions",permalink:"/fields/field-types/formula/numeric-functions"},next:{title:"Date functions",permalink:"/fields/field-types/formula/date-functions"}},o={},p=[{value:"String functions",id:"string-functions",level:3},{value:"Related Articles",id:"related-articles",level:2}],s={toc:p},m="wrapper";function u(t){let{components:e,...n}=t;return(0,a.kt)(m,(0,r.Z)({},s,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h3",{id:"string-functions"},"String functions"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:null},"Name"),(0,a.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,a.kt)("th",{parentName:"tr",align:null},"Sample"),(0,a.kt)("th",{parentName:"tr",align:null},"Output"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"CONCAT")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"CONCAT(str1, [str2,...])")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"CONCAT({field1}, ' ', {field2})")),(0,a.kt)("td",{parentName:"tr",align:null},"Concatenated string of input parameters")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"LEFT")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LEFT(str1, n)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LEFT({field}, 3)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"n")," characters from the beginning of input parameter")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"LEN")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LEN(str)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LEN({field})")),(0,a.kt)("td",{parentName:"tr",align:null},"Input parameter character length")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"LOWER")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LOWER(str)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"LOWER({field})")),(0,a.kt)("td",{parentName:"tr",align:null},"Lower case converted string of input parameter")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"MID")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"MID(str, position, [count])")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"MID({field}, 3, 2)")),(0,a.kt)("td",{parentName:"tr",align:null},"Alias for ",(0,a.kt)("inlineCode",{parentName:"td"},"SUBSTR"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"REPEAT")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"REPEAT(str, count)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"REPEAT({field}, 2)")),(0,a.kt)("td",{parentName:"tr",align:null},"Specified copies of the input parameter string concatenated together")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"REPLACE")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"REPLACE(str, srchStr, rplcStr)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"REPLACE({field}, 'int', 'num')")),(0,a.kt)("td",{parentName:"tr",align:null},"String, after replacing all occurrences of ",(0,a.kt)("inlineCode",{parentName:"td"},"srchStr")," with ",(0,a.kt)("inlineCode",{parentName:"td"},"rplcStr"))),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"RIGHT")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"RIGHT(str, n)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"RIGHT({field}, 3)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"n")," characters from the end of input parameter")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"SEARCH")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"SEARCH(str, srchStr)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"SEARCH({field}, 'str')")),(0,a.kt)("td",{parentName:"tr",align:null},"Index of ",(0,a.kt)("inlineCode",{parentName:"td"},"srchStr")," specified if found, 0 otherwise")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"SUBSTR")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"SUBTR(str, position, [count])")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"SUBSTR({field}, 3, 2)")),(0,a.kt)("td",{parentName:"tr",align:null},"Substring of length 'count' of input string, from the postition specified")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"TRIM")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"TRIM(str)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"TRIM({field})")),(0,a.kt)("td",{parentName:"tr",align:null},"Remove trailing and leading whitespaces from input parameter")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"UPPER")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"UPPER(str)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"UPPER({field})")),(0,a.kt)("td",{parentName:"tr",align:null},"Upper case converted string of input parameter")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("strong",{parentName:"td"},"URL")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"URL(str)")),(0,a.kt)("td",{parentName:"tr",align:null},(0,a.kt)("inlineCode",{parentName:"td"},"URL({field})")),(0,a.kt)("td",{parentName:"tr",align:null},"Convert to a hyperlink if it is a valid URL")))),(0,a.kt)("h2",{id:"related-articles"},"Related Articles"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/formula/operators"},"Numeric and Logical Operators")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/formula/numeric-functions"},"Numeric Functions")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/formula/date-functions"},"Date Functions")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/formula/conditional-expressions"},"Conditional Expressions"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0aea064e.44552b5a.js b/packages/noco-docs/dist/assets/js/0aea064e.44552b5a.js new file mode 100644 index 0000000000..ea682fae62 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0aea064e.44552b5a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7026],{16777:e=>{e.exports=JSON.parse('{"label":"Field Width","permalink":"/tags/field-width","allTagsPath":"/tags","count":1,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0b819d8c.0e797db3.js b/packages/noco-docs/dist/assets/js/0b819d8c.0e797db3.js new file mode 100644 index 0000000000..76cb5232d8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0b819d8c.0e797db3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[757],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>y});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function c(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),l=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},d=function(e){var t=l(e.components);return n.createElement(i.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(a),m=r,y=u["".concat(i,".").concat(m)]||u[m]||p[m]||o;return a?n.createElement(y,c(c({ref:t},d),{},{components:a})):n.createElement(y,c({ref:t},d))}));function y(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,c=new Array(o);c[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[u]="string"==typeof e?e:r,c[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var n=a(87462),r=(a(67294),a(3905));const o={title:"Sync with Data source",description:"Learn how to sync changes done in external data source with NocoDB.",tags:["Data Sources","Sync","External","PG","MySQL"],keywords:["NocoDB data source","connect data source","external data source","PG data source","MySQL data source"]},c=void 0,s={unversionedId:"data-sources/sync-with-data-source",id:"data-sources/sync-with-data-source",title:"Sync with Data source",description:"Learn how to sync changes done in external data source with NocoDB.",source:"@site/docs/100.data-sources/030.sync-with-data-source.md",sourceDirName:"100.data-sources",slug:"/data-sources/sync-with-data-source",permalink:"/data-sources/sync-with-data-source",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/100.data-sources/030.sync-with-data-source.md",tags:[{label:"Data Sources",permalink:"/tags/data-sources"},{label:"Sync",permalink:"/tags/sync"},{label:"External",permalink:"/tags/external"},{label:"PG",permalink:"/tags/pg"},{label:"MySQL",permalink:"/tags/my-sql"}],version:"current",sidebarPosition:30,frontMatter:{title:"Sync with Data source",description:"Learn how to sync changes done in external data source with NocoDB.",tags:["Data Sources","Sync","External","PG","MySQL"],keywords:["NocoDB data source","connect data source","external data source","PG data source","MySQL data source"]},sidebar:"tutorialSidebar",previous:{title:"Connect to a Data source",permalink:"/data-sources/connect-to-data-source"},next:{title:"Actions on Data sources",permalink:"/data-sources/actions-on-data-sources"}},i={},l=[],d={toc:l},u="wrapper";function p(e){let{components:t,...o}=e;return(0,r.kt)(u,(0,n.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,r.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,r.kt)("li",{parentName:"ol"},"Select ",(0,r.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Sync Metadata")," button listed under ",(0,r.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to sync metadata for"),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Reload")," button to refresh Sync state (Optional)"),(0,r.kt)("li",{parentName:"ol"},"Any changes to the metadata identified will be listed in the ",(0,r.kt)("inlineCode",{parentName:"li"},"Sync State")," column"),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Sync Now")," button to sync the metadata changes")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"sync metadata",src:a(40247).Z,width:"2876",height:"928"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"sync metadata",src:a(94500).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,"After the sync is complete, you can see the updated state in the ",(0,r.kt)("inlineCode",{parentName:"p"},"Sync State")," column.",(0,r.kt)("br",{parentName:"p"}),"\n","Sync modal also marks ",(0,r.kt)("inlineCode",{parentName:"p"},"Tables metadata is in Sync")," in the header."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"post sync",src:a(68696).Z,width:"2880",height:"1800"})))}p.isMDXComponent=!0},40247:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-2-85c6555101f32ed24b6ad18937e62f96.png"},94500:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-meta-sync-04cd020f9b20939911dab34bb2a85820.png"},68696:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-post-sync-82f4dc6812378d0f4b119efaa7761735.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0b97ee01.9be26952.js b/packages/noco-docs/dist/assets/js/0b97ee01.9be26952.js new file mode 100644 index 0000000000..1b20c8fada --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0b97ee01.9be26952.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1590],{30648:t=>{t.exports=JSON.parse('{"label":"Upload","permalink":"/tags/upload","allTagsPath":"/tags","count":1,"items":[{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","permalink":"/tables/import-data-into-existing-table"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0bd8cdc6.7335a712.js b/packages/noco-docs/dist/assets/js/0bd8cdc6.7335a712.js new file mode 100644 index 0000000000..d780e4bf63 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0bd8cdc6.7335a712.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5707],{93713:o=>{o.exports=JSON.parse('{"label":"Roles","permalink":"/tags/roles","allTagsPath":"/tags","count":5,"items":[{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/collaboration/base-collaboration"},{"id":"roles-and-permissions/roles-permissions-overview","title":"Roles & permissions overview","description":"Learn about roles and permissions in NocoDB.","permalink":"/roles-and-permissions/roles-permissions-overview"},{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/collaboration/workspace-collaboration"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0c130525.033f7aac.js b/packages/noco-docs/dist/assets/js/0c130525.033f7aac.js new file mode 100644 index 0000000000..bd6c772e81 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0c130525.033f7aac.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[604],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>k});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var o=a.createContext({}),p=function(t){var e=a.useContext(o),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(o.Provider,{value:e},t.children)},N="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},s=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,o=t.parentName,m=d(t,["components","mdxType","originalType","parentName"]),N=p(n),s=r,k=N["".concat(o,".").concat(s)]||N[s]||u[s]||l;return n?a.createElement(k,i(i({ref:e},m),{},{components:n})):a.createElement(k,i({ref:e},m))}));function k(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=s;var d={};for(var o in e)hasOwnProperty.call(e,o)&&(d[o]=e[o]);d.originalType=t,d[N]="string"==typeof t?t:r,i[1]=d;for(var p=2;p{n.r(e),n.d(e,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const l={title:"Environment Variables",description:"Environment Variables for NocoDB!",hide_table_of_contents:!0},i=void 0,d={unversionedId:"getting-started/environment-variables",id:"version-0.109.7/getting-started/environment-variables",title:"Environment Variables",description:"Environment Variables for NocoDB!",source:"@site/versioned_docs/version-0.109.7/020.getting-started/020.environment-variables.md",sourceDirName:"020.getting-started",slug:"/getting-started/environment-variables",permalink:"/0.109.7/getting-started/environment-variables",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/020.getting-started/020.environment-variables.md",tags:[],version:"0.109.7",sidebarPosition:20,frontMatter:{title:"Environment Variables",description:"Environment Variables for NocoDB!",hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/0.109.7/getting-started/installation"},next:{title:"Upgrading",permalink:"/0.109.7/getting-started/upgrading"}},o={},p=[],m={toc:p},N="wrapper";function u(t){let{components:e,...n}=t;return(0,r.kt)(N,(0,a.Z)({},m,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"For production usecases, it is ",(0,r.kt)("strong",{parentName:"p"},"recommended")," to configure "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_DB"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_AUTH_JWT_SECRET"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_PUBLIC_URL"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_REDIS_URL"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Comments"),(0,r.kt)("th",{parentName:"tr",align:null},"If absent"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,r.kt)("td",{parentName:"tr",align:null},"See our database URLs"),(0,r.kt)("td",{parentName:"tr",align:null},"A local SQLite will be created in root folder if ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not provided")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB_JSON"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," and value should be valid knex connection JSON"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB_JSON_FILE"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," and value should be a valid path to knex connection JSON"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DATABASE_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"JDBC URL Format. Can be used instead of NC_DB."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DATABASE_URL_FILE"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of DATABASE_URL: path to file containing JDBC URL Format."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_AUTH_JWT_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"JWT secret used for auth and storing other secrets"),(0,r.kt)("td",{parentName:"tr",align:null},"A random secret will be generated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"PORT"),(0,r.kt)("td",{parentName:"tr",align:null},"For setting app running port"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8080"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_DEFAULT"),(0,r.kt)("td",{parentName:"tr",align:null},"Default pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"25")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_MAX"),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"1000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_MIN"),(0,r.kt)("td",{parentName:"tr",align:null},"Minimum allowed pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_TOOL_DIR"),(0,r.kt)("td",{parentName:"tr",align:null},"App directory to keep metadata and app related files"),(0,r.kt)("td",{parentName:"tr",align:null},"Defaults to current working directory. In docker maps to ",(0,r.kt)("inlineCode",{parentName:"td"},"/usr/app/data/")," for mounting volume.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_PUBLIC_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Used for sending Email invitations"),(0,r.kt)("td",{parentName:"tr",align:null},"Best guess from http request params")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_JWT_EXPIRES_IN"),(0,r.kt)("td",{parentName:"tr",align:null},"JWT token expiry time"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"10h"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_CONNECT_TO_EXTERNAL_DB_DISABLED"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable Project creation with external database"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_INVITE_ONLY_SIGNUP"),(0,r.kt)("td",{parentName:"tr",align:null},"Removed since version 0.99.0 and now it's recommended to use ",(0,r.kt)("a",{parentName:"td",href:"/0.109.7/setup-and-usages/account-settings#enable--disable-signup"},"super admin settings menu"),". Allow users to signup only via invite url, value should be any non-empty string."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NUXT_PUBLIC_NC_BACKEND_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom Backend URL"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://localhost:8080")," will be used")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_REQUEST_BODY_SIZE"),(0,r.kt)("td",{parentName:"tr",align:null},"Request body size ",(0,r.kt)("a",{parentName:"td",href:"https://expressjs.com/en/resources/middleware/body-parser.html#limit"},"limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1048576"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_EXPORT_MAX_TIMEOUT"),(0,r.kt)("td",{parentName:"tr",align:null},"After NC_EXPORT_MAX_TIMEOUT csv gets downloaded in batches"),(0,r.kt)("td",{parentName:"tr",align:null},"Default value 5000(in millisecond) will be used")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_TELE"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable telemetry"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DASHBOARD_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom dashboard url path"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"/dashboard"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_GOOGLE_CLIENT_ID"),(0,r.kt)("td",{parentName:"tr",align:null},"Google client id to enable google authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_GOOGLE_CLIENT_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"Google client secret to enable google authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MIGRATIONS_DISABLED"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable NocoDB migration"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MIN"),(0,r.kt)("td",{parentName:"tr",align:null},"If set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SENTRY_DSN"),(0,r.kt)("td",{parentName:"tr",align:null},"For Sentry monitoring"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_REDIS_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom Redis URL. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"redis://:authpassword@127.0.0.1:6380/4")),(0,r.kt)("td",{parentName:"tr",align:null},"Meta data will be stored in memory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_ERR_REPORT"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable error reporting"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_CACHE"),(0,r.kt)("td",{parentName:"tr",align:null},"To be used only while debugging. On setting this to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," - meta data be fetched from db instead of redis/cache."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_ACCESS_KEY_ID"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 access key id"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_SECRET_ACCESS_KEY"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 secret access key"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_BUCKET"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 bucket"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_BUCKET_PATH"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 bucket path (like folder within S3 bucket)"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_FROM"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - Email sender address"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_HOST"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - SMTP host value"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_PORT"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - SMTP port value"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_USERNAME"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - SMTP username value for authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_PASSWORD"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - SMTP password value for authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_SECURE"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - To enable secure set value as ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," any other value treated as false"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_IGNORE_TLS"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - To ignore tls set value as ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," any other value treated as false. For more info visit ",(0,r.kt)("a",{parentName:"td",href:"https://nodemailer.com/smtp/"},"https://nodemailer.com/smtp/")),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_BUCKET_NAME"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS S3 bucket name"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_REGION"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS S3 region"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_ACCESS_KEY"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS access key credential for accessing resource"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_ACCESS_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS access secret credential for accessing resource"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ADMIN_EMAIL"),(0,r.kt)("td",{parentName:"tr",align:null},"For updating/creating super admin with provided email and password"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ATTACHMENT_FIELD_SIZE"),(0,r.kt)("td",{parentName:"tr",align:null},"For setting the attachment field size(in Bytes)"),(0,r.kt)("td",{parentName:"tr",align:null},"Defaults to 20MB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ADMIN_PASSWORD"),(0,r.kt)("td",{parentName:"tr",align:null},"For updating/creating super admin with provided email and password. Your password should have at least 8 letters with one uppercase, one number and one special letter(Allowed special chars $&+,:;=?@#","|","'.^*()%!_-\" )"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NODE_OPTIONS"),(0,r.kt)("td",{parentName:"tr",align:null},"For passing Node.js ",(0,r.kt)("a",{parentName:"td",href:"https://nodejs.org/api/cli.html#node_optionsoptions"},"options")," to instance"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MINIMAL_DBS"),(0,r.kt)("td",{parentName:"tr",align:null},"Create a new SQLite file for each project. All the db files are stored in ",(0,r.kt)("inlineCode",{parentName:"td"},"nc_minimal_dbs")," folder in current working directory. (This option restricts project creation on external sources)"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_AUDIT"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable Audit Log"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_AUTOMATION_LOG_LEVEL"),(0,r.kt)("td",{parentName:"tr",align:null},"Possible Values: ",(0,r.kt)("inlineCode",{parentName:"td"},"OFF"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ERROR"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ALL"),". See ",(0,r.kt)("a",{parentName:"td",href:"/0.109.7/developer-resources/webhooks#call-log"},"Webhooks")," for details."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OFF"))))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0cab3fcc.a26e8fb8.js b/packages/noco-docs/dist/assets/js/0cab3fcc.a26e8fb8.js new file mode 100644 index 0000000000..ae1babfa09 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0cab3fcc.a26e8fb8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3479],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),c=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=c(e.components);return a.createElement(d.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},b=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,d=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=c(n),b=r,k=p["".concat(d,".").concat(b)]||p[b]||m[b]||o;return n?a.createElement(k,l(l({ref:t},s),{},{components:n})):a.createElement(k,l({ref:t},s))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=b;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i[p]="string"==typeof e?e:r,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Create webhook",description:"Learn how to create a webhook in NocoDB.",tags:["Webhook","Create"],keywords:["NocoDB webhook","create webhook"]},l=void 0,i={unversionedId:"automation/webhook/create-webhook",id:"automation/webhook/create-webhook",title:"Create webhook",description:"Learn how to create a webhook in NocoDB.",source:"@site/docs/130.automation/020.webhook/020.create-webhook.md",sourceDirName:"130.automation/020.webhook",slug:"/automation/webhook/create-webhook",permalink:"/automation/webhook/create-webhook",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/130.automation/020.webhook/020.create-webhook.md",tags:[{label:"Webhook",permalink:"/tags/webhook"},{label:"Create",permalink:"/tags/create"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create webhook",description:"Learn how to create a webhook in NocoDB.",tags:["Webhook","Create"],keywords:["NocoDB webhook","create webhook"]},sidebar:"tutorialSidebar",previous:{title:"Webhook overview",permalink:"/automation/webhook/webhook-overview"},next:{title:"Actions on webhook",permalink:"/automation/webhook/actions-on-webhook"}},d={},c=[{value:"Create Webhook",id:"create-webhook",level:2},{value:"Accessing webhook page",id:"accessing-webhook-page",level:3},{value:"Configuring webhook",id:"configuring-webhook",level:3},{value:"Webhook Response Sample",id:"webhook-response-sample",level:3}],s=e=>function(t){return console.warn("Component "+e+" was not imported, exported, or provided by MDXProvider as global scope"),(0,r.kt)("div",t)},p=s("Tabs"),m=s("TabItem"),b={toc:c},k="wrapper";function u(e){let{components:t,...o}=e;return(0,r.kt)(k,(0,a.Z)({},b,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"create-webhook"},"Create Webhook"),(0,r.kt)("h3",{id:"accessing-webhook-page"},"Accessing webhook page"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click on table for which webhook needs to be configured on the left sidebar"),(0,r.kt)("li",{parentName:"ol"},"Open ",(0,r.kt)("inlineCode",{parentName:"li"},"Details")," tab in topbar,"),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Webhooks")," tab"),(0,r.kt)("li",{parentName:"ol"},"Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Add New Webhook"))),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Accessing webhook",src:n(89999).Z,width:"2872",height:"1584"})),(0,r.kt)("h3",{id:"configuring-webhook"},"Configuring webhook"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Name of the webhook"),(0,r.kt)("li",{parentName:"ol"},"Select the event for which webhook needs to be triggered")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Trigger"),(0,r.kt)("th",{parentName:"tr",align:null},"Details"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Insert"),(0,r.kt)("td",{parentName:"tr",align:null},"After a single record is inserted")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Update"),(0,r.kt)("td",{parentName:"tr",align:null},"After a single record is updated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Delete"),(0,r.kt)("td",{parentName:"tr",align:null},"After a single record is deleted")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Bulk Insert"),(0,r.kt)("td",{parentName:"tr",align:null},"After bulk records are inserted")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Bulk Update"),(0,r.kt)("td",{parentName:"tr",align:null},"After bulk records are updated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"After Bulk Delete"),(0,r.kt)("td",{parentName:"tr",align:null},"After bulk records are deleted")))),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},"Method & URL: Configure the endpoint to which webhook needs to be triggered. Supported methods are GET, POST, DELETE, PUT, HEAD, PATCH"),(0,r.kt)("li",{parentName:"ol"},"Headers & Parameters: Configure Request headers & parameters (optional)"),(0,r.kt)("li",{parentName:"ol"},"Condition: Only records meeting the configured criteria will trigger webhook (optional)"),(0,r.kt)("li",{parentName:"ol"},"Test webhook (with sample payload) to verify if parameter are configured appropriately (optional)"),(0,r.kt)("li",{parentName:"ol"},"Save the webhook")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Configuring webhook",src:n(3896).Z,width:"2872",height:"1790"})),(0,r.kt)("h3",{id:"webhook-response-sample"},"Webhook Response Sample"),(0,r.kt)(p,{mdxType:"Tabs"},(0,r.kt)(m,{value:"After Insert",label:"After Insert",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.insert",\n "id": "9dac1c54-b3be-49a1-a676-af388145fa8c",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_736wrpoas7tr0c",\n "view_name": "Film",\n "records": [\n {\n "FilmId": 1011,\n "Title": "FOO",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n }\n ]\n }\n}\n'))),(0,r.kt)(m,{value:"After Update",label:"After Update",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.update",\n "id": "6a6ebfe4-b0b5-434e-b5d6-5212adbf82fa",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_736wrpoas7tr0c",\n "view_name": "Film",\n "previous_records": [\n {\n "FilmId": 1,\n "Title": "ACADEMY DINOSAUR",\n "Description": "A Epic Drama of a Feminist in The Canadian Rockies",\n "Actor List": [\n {\n "ActorId": 10,\n "FirstName": "CHRISTIAN"\n }\n ],\n }\n ],\n "records": [\n {\n "FilmId": 1,\n "Title": "ACADEMY DINOSAUR (Edited)",\n "Actor List": [\n {\n "ActorId": 10,\n "FirstName": "CHRISTIAN"\n }\n ],\n }\n ]\n }\n}\n'))),(0,r.kt)(m,{value:"After Delete",label:"After Delete",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.delete",\n "id": "e593079f-70e5-4965-8944-5ff7aeed005c",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_736wrpoas7tr0c",\n "view_name": "Film",\n "records": [\n {\n "FilmId": 1010,\n "Title": "ALL-EDITED",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n }\n ]\n }\n}\n'))),(0,r.kt)(m,{value:"After Bulk Insert",label:"After Bulk Insert",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.bulkInsert",\n "id": "f8397b06-a399-4a3a-b6b0-6d1c0c2f7578",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_3fq2e9q8drkblw",\n "view_name": "GridView",\n "records_inserted": 2\n }\n}\n'))),(0,r.kt)(m,{value:"After Bulk Update",label:"After Bulk Update",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.bulkUpdate",\n "id": "e983cea5-8e38-438e-96a0-048751f6830b",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_3fq2e9q8drkblw",\n "view_name": "Sheet-1",\n "previous_records": [\n [\n {\n "FilmId": 1005,\n "Title": "Q",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n },\n {\n "FilmId": 1004,\n "Title": "P",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n }\n }\n ]\n ],\n "records": [\n [\n {\n "FilmId": 1005,\n "Title": "Q-EDITED",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n }\n },\n {\n "FilmId": 1004,\n "Title": "P-EDITED",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n }\n ]\n ]\n }\n}\n'))),(0,r.kt)(m,{value:"After Bulk Delete",label:"After Bulk Delete",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'{\n "type": "records.after.bulkDelete",\n "id": "e7f1f4e5-7052-4ca2-9355-241ceb836f43",\n "data": {\n "table_id": "md_xzru7dcqrecc60",\n "table_name": "Film",\n "view_id": "vw_3fq2e9q8drkblw",\n "view_name": "Sheet-1",\n "records": [\n [\n {\n "FilmId": 1022,\n "Title": "x",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n },\n {\n "FilmId": 1023,\n "Title": "x",\n "Language": {\n "LanguageId": 1,\n "Name": "English"\n },\n }\n ]\n ]\n }\n}\n')))))}u.isMDXComponent=!0},89999:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/create-webhook-1-be523f2a91b6829cd8d82915d07e92e4.png"},3896:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/create-webhook-2-ae6af25bd288d16427ddbcd283a32eb2.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0d8de604.0a26d9d5.js b/packages/noco-docs/dist/assets/js/0d8de604.0a26d9d5.js new file mode 100644 index 0000000000..25202517b7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0d8de604.0a26d9d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2092],{34398:e=>{e.exports=JSON.parse('{"label":"Custom types","permalink":"/tags/custom-types","allTagsPath":"/tags","count":8,"items":[{"id":"fields/field-types/custom-types/attachment","title":"Attachment","description":"This article explains how to create & work with an Attachment field.","permalink":"/fields/field-types/custom-types/attachment"},{"id":"fields/field-types/custom-types/barcode","title":"Barcode","description":"This article explains how to create & work with a Barcode field.","permalink":"/fields/field-types/custom-types/barcode"},{"id":"fields/field-types/select-based/checkbox","title":"Checkbox","description":"This article explains how to create & work with a Checkbox field.","permalink":"/fields/field-types/select-based/checkbox"},{"id":"fields/field-types/custom-types/geometry","title":"Geometry","description":"This article explains how to create & work with a Geometry field.","permalink":"/fields/field-types/custom-types/geometry"},{"id":"fields/field-types/custom-types/json","title":"JSON","description":"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.","permalink":"/fields/field-types/custom-types/json"},{"id":"fields/field-types/custom-types/QR-code","title":"QR code","description":"This article explains how to create & work with a QR code field.","permalink":"/fields/field-types/custom-types/QR-code"},{"id":"fields/field-types/select-based/rating","title":"Rating","description":"This article explains how to create & work with a Rating field.","permalink":"/fields/field-types/select-based/rating"},{"id":"fields/field-types/custom-types/specific-db-type","title":"Specific DB type","description":"This article explains how to create & work with a Specific DB Type field.","permalink":"/fields/field-types/custom-types/specific-db-type"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0ecc5e11.64d354f8.js b/packages/noco-docs/dist/assets/js/0ecc5e11.64d354f8.js new file mode 100644 index 0000000000..6cec13967c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0ecc5e11.64d354f8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[117],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>N});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var d=a.createContext({}),p=function(t){var e=a.useContext(d),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(d.Provider,{value:e},t.children)},k="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},c=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,i=t.originalType,d=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),k=p(n),c=r,N=k["".concat(d,".").concat(c)]||k[c]||s[c]||i;return n?a.createElement(N,l(l({ref:e},m),{},{components:n})):a.createElement(N,l({ref:e},m))}));function N(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=n.length,l=new Array(i);l[0]=c;var o={};for(var d in e)hasOwnProperty.call(e,d)&&(o[d]=e[d]);o.originalType=t,o[k]="string"==typeof t?t:r,l[1]=o;for(var p=2;p{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>l,default:()=>s,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const i={title:"Keyboard shortcuts",tags:["Getting Started","Shortcuts","Productivity hacks"],keywords:["keyboard shortcuts","shortcuts","keyboard"]},l=void 0,o={unversionedId:"getting-started/keyboard-shortcuts",id:"getting-started/keyboard-shortcuts",title:"Keyboard shortcuts",description:"Quick Actions",source:"@site/docs/020.getting-started/040.keyboard-shortcuts.md",sourceDirName:"020.getting-started",slug:"/getting-started/keyboard-shortcuts",permalink:"/getting-started/keyboard-shortcuts",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/040.keyboard-shortcuts.md",tags:[{label:"Getting Started",permalink:"/tags/getting-started"},{label:"Shortcuts",permalink:"/tags/shortcuts"},{label:"Productivity hacks",permalink:"/tags/productivity-hacks"}],version:"current",sidebarPosition:40,frontMatter:{title:"Keyboard shortcuts",tags:["Getting Started","Shortcuts","Productivity hacks"],keywords:["keyboard shortcuts","shortcuts","keyboard"]},sidebar:"tutorialSidebar",previous:{title:"NocoDB terminologies",permalink:"/getting-started/terminologies"},next:{title:"Installation",permalink:"/getting-started/self-hosted/installation"}},d={},p=[{value:"Quick Actions",id:"quick-actions",level:2},{value:"Recent Views",id:"recent-views",level:2},{value:"Search in Docs",id:"search-in-docs",level:2},{value:"General shortcuts",id:"general-shortcuts",level:2},{value:"Grid view shortcuts",id:"grid-view-shortcuts",level:2},{value:"Field type specific shortcuts",id:"field-type-specific-shortcuts",level:2},{value:"Expanded form shortcuts",id:"expanded-form-shortcuts",level:2}],m={toc:p},k="wrapper";function s(t){let{components:e,...i}=t;return(0,r.kt)(k,(0,a.Z)({},m,i,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"quick-actions"},"Quick Actions"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This feature is available only in NocoDB Cloud hosted version.")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"K")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"K"),' on Windows) is a keyboard shortcut to quickly navigate between different workspace, table, view, or a menu items. For example, if you want to quickly navigate to the "API Tokens" page, you can open Quick Actions menu using \u2318+K, type "Token" in the search box and press enter.'),(0,r.kt)("p",null,"This shortcut is often referred to as \"Command-K\". It's a great way to save time when you're navigating around NocoDB."),(0,r.kt)("p",null,'Command-K menu can also be accessed via the "Quick Actions" button in the top left corner of the screen.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Quick Actions",src:n(97204).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,"To navigate within \u2318+K menu, "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2193")," to navigate between listed items"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Enter")," to select an item"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Backspace")," to move to parent menu"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Esc")," to close the menu")),(0,r.kt)("h2",{id:"recent-views"},"Recent Views"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This feature is available only in NocoDB Cloud hosted version.")),(0,r.kt)("p",null,"Access recently visited views quickly using ",(0,r.kt)("inlineCode",{parentName:"p"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"L")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"L")," on Windows). Search results will be displayed in a modal window; click on the result to open the view. "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Recent Views",src:n(83971).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,"To navigate within \u2318+K menu,"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2193")," to navigate between listed items"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Enter")," to select an item"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Backspace")," to move to parent menu"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Esc")," to close the menu")),(0,r.kt)("h2",{id:"search-in-docs"},"Search in Docs"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"This feature is available only in NocoDB Cloud hosted version.")),(0,r.kt)("p",null,"Quickly search through docs from within NocoDB UI using ",(0,r.kt)("inlineCode",{parentName:"p"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"J")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"Ctrl")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"J")," on Windows). Search results will be displayed in a modal window; click on the result to open the page in a new tab."),(0,r.kt)("p",null,"To navigate within \u2318+K menu,"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u2193")," to navigate between listed items"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Enter")," to select an item"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Backspace")," to move to parent menu"),(0,r.kt)("li",{parentName:"ul"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Esc")," to close the menu")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Search in Docs",src:n(99526).Z,width:"2880",height:"1800"})),(0,r.kt)("h2",{id:"general-shortcuts"},"General shortcuts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"t")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Opens new table modal")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"c")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Opens new field modal")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"f")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Toggles fullscreen mode")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"i")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Opens share button modal")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"k")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Opens Quick Actions modal")))),(0,r.kt)("h2",{id:"grid-view-shortcuts"},"Grid view shortcuts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"General cell navigation")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Delete")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Clear cell")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Space")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Expand current record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Tab")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move to next cell horizontally; if on last cell, move to beginning of next record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Esc")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Exit cell EDIT mode")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Switch cell in focus to EDIT mode; opens modal/picker if cell is associated with one")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to first record in this field (in same page)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to last record in this field (in same page)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to first field in this record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to last field in this record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"c")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Copy cell contents")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"v")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Paste copied contents")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"r")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Inserts new record in grid view")))),(0,r.kt)("h2",{id:"field-type-specific-shortcuts"},"Field type specific shortcuts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Datatype"),(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Text & Numerical cells"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move cursor to the left / right")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move cursor to the beginning / end")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Single Select"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Select option")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Multi Select"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Select / deselect option")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Link"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Link current selection")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Checkbox"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Toggle")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Rating"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"<0 ~ Max>")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enter number to toggle rating")))),(0,r.kt)("h2",{id:"expanded-form-shortcuts"},"Expanded form shortcuts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Save current expanded form item")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Switch to next record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Switch to previous record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"S")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Save current expanded form record")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"alt")," + ",(0,r.kt)("inlineCode",{parentName:"td"},"N")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Create a new record")))))}s.isMDXComponent=!0},99526:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/cmd-j-267d51c21c4e2eff6b1b92fbf33910ff.png"},97204:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/cmd-k-1f005c4c3352fd997c5f7861a8c8d503.png"},83971:(t,e,n)=>{n.d(e,{Z:()=>a});const a=n.p+"assets/images/cmd-l-d77ac9514673c96a734aed572ec2d636.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0f4f52c0.8653bf6a.js b/packages/noco-docs/dist/assets/js/0f4f52c0.8653bf6a.js new file mode 100644 index 0000000000..20a99e4b48 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0f4f52c0.8653bf6a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5822],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>u});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var c=n.createContext({}),s=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},b="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,c=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),b=s(a),m=l,u=b["".concat(c,".").concat(m)]||b[m]||d[m]||i;return a?n.createElement(u,o(o({ref:t},p),{},{components:a})):n.createElement(u,o({ref:t},p))}));function u(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,o=new Array(i);o[0]=m;var r={};for(var c in t)hasOwnProperty.call(t,c)&&(r[c]=t[c]);r.originalType=e,r[b]="string"==typeof e?e:l,o[1]=r;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>s});var n=a(87462),l=(a(67294),a(3905));const i={title:"Actions on table",description:"Learn how to rename, duplicate, and delete a table in NocoDB.",tags:["Tables","Rename","Duplicate","Delete"],keywords:["NocoDB table","rename table","duplicate table","delete table"]},o=void 0,r={unversionedId:"tables/actions-on-table",id:"tables/actions-on-table",title:"Actions on table",description:"Learn how to rename, duplicate, and delete a table in NocoDB.",source:"@site/docs/050.tables/060.actions-on-table.md",sourceDirName:"050.tables",slug:"/tables/actions-on-table",permalink:"/tables/actions-on-table",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/050.tables/060.actions-on-table.md",tags:[{label:"Tables",permalink:"/tags/tables"},{label:"Rename",permalink:"/tags/rename"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Delete",permalink:"/tags/delete"}],version:"current",sidebarPosition:60,frontMatter:{title:"Actions on table",description:"Learn how to rename, duplicate, and delete a table in NocoDB.",tags:["Tables","Rename","Duplicate","Delete"],keywords:["NocoDB table","rename table","duplicate table","delete table"]},sidebar:"tutorialSidebar",previous:{title:"Import data into an existing table",permalink:"/tables/import-data-into-existing-table"},next:{title:"Table operations overview",permalink:"/table-operations/overview"}},c={},s=[{value:"Rename table",id:"rename-table",level:2},{value:"Change table icon",id:"change-table-icon",level:2},{value:"Duplicate table",id:"duplicate-table",level:2},{value:"Delete table",id:"delete-table",level:2},{value:"Related articles",id:"related-articles",level:2}],p={toc:s},b="wrapper";function d(e){let{components:t,...i}=e;return(0,l.kt)(b,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"rename-table"},"Rename table"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Access the contextual menu for the table by clicking on the ellipsis symbol (",(0,l.kt)("inlineCode",{parentName:"li"},"..."),") located in the left sidebar."),(0,l.kt)("li",{parentName:"ol"},"Click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"Rename")," option from the context menu."),(0,l.kt)("li",{parentName:"ol"},"Enter the desired new table name into the provided field."),(0,l.kt)("li",{parentName:"ol"},"To finalize the renaming process, click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"Rename")," button.")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(92097).Z,width:"2878",height:"1176"})),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(75270).Z,width:"2876",height:"1188"})),(0,l.kt)("h2",{id:"change-table-icon"},"Change table icon"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Click on the existing table icon to the left of the table name in the left sidebar."),(0,l.kt)("li",{parentName:"ol"},"Select the desired icon from the list of available options.")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(75291).Z,width:"2878",height:"1796"})),(0,l.kt)("h2",{id:"duplicate-table"},"Duplicate table"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Access the contextual menu for the table by clicking on the ellipsis symbol (",(0,l.kt)("inlineCode",{parentName:"li"},"..."),") located in the left sidebar."),(0,l.kt)("li",{parentName:"ol"},"Click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"Duplicate")," option from the context menu."),(0,l.kt)("li",{parentName:"ol"},"For additional customization (Optional)\na) Under ",(0,l.kt)("inlineCode",{parentName:"li"},"Include data"),", you have the flexibility to choose whether to replicate the table with or without its data.\nb) Regarding ",(0,l.kt)("inlineCode",{parentName:"li"},"Include views")," you can select whether to duplicate the table with or without its associated views."),(0,l.kt)("li",{parentName:"ol"},"Proceed by clicking the ",(0,l.kt)("inlineCode",{parentName:"li"},"Duplicate Table")," button found in the confirmation dialog.")),(0,l.kt)("p",null,"A new table will be generated, mirroring the original table's schema and content, in accordance with the configurations specified in step 3."),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(92097).Z,width:"2878",height:"1176"})),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(84905).Z,width:"2878",height:"1210"})),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"Duplicate table will be created in the same base as the original table"),(0,l.kt)("li",{parentName:"ul"},"Duplicate table will carry suffix ",(0,l.kt)("inlineCode",{parentName:"li"}," Copy")," in its name."),(0,l.kt)("li",{parentName:"ul"},"Duplicate table option is not available for ",(0,l.kt)("inlineCode",{parentName:"li"},"External DB")," projects"))),(0,l.kt)("h2",{id:"delete-table"},"Delete table"),(0,l.kt)("admonition",{type:"danger"},(0,l.kt)("p",{parentName:"admonition"},(0,l.kt)("strong",{parentName:"p"},"This action cannot be undone."))),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Access the contextual menu for the table by clicking on the ellipsis symbol (",(0,l.kt)("inlineCode",{parentName:"li"},"..."),") located in the left sidebar."),(0,l.kt)("li",{parentName:"ol"},"Click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"Delete")," option from the context menu."),(0,l.kt)("li",{parentName:"ol"},"To finalize the deletion process, click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"Delete")," button in the confirmation dialog.")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(92097).Z,width:"2878",height:"1176"})),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(72746).Z,width:"2878",height:"1178"})),(0,l.kt)("h2",{id:"related-articles"},"Related articles"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/create-table"},"Create a new table")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/create-table-via-import"},"Create a table using a CSV, Excel or a JSON")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/import-data-into-existing-table"},"Import data from Csv/Xlsx into existing table")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/actions-on-table#rename-table"},"Rename a table")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/actions-on-table#duplicate-table"},"Duplicate a table")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/tables/actions-on-table#delete-table"},"Delete a table"))))}d.isMDXComponent=!0},75291:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/table-change-icon-baccebee8b06d0948a88ecfcb9b728db.png"},92097:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/table-context-menu-4350d219274600ef6608abe0543fd679.png"},72746:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/table-delete-67882c51f591ee24a8a664a1f56bfdb4.png"},84905:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/table-duplicate-63649061c6e13ea404b6d030f393b7ef.png"},75270:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/table-rename-61e86ff470760b4ac119d328ceb6e767.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/0f6b8098.784442da.js b/packages/noco-docs/dist/assets/js/0f6b8098.784442da.js new file mode 100644 index 0000000000..b052200060 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/0f6b8098.784442da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6157],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>b});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=n.createContext({}),c=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,l=e.originalType,s=e.parentName,d=r(e,["components","mdxType","originalType","parentName"]),p=c(a),m=i,b=p["".concat(s,".").concat(m)]||p[m]||u[m]||l;return a?n.createElement(b,o(o({ref:t},d),{},{components:a})):n.createElement(b,o({ref:t},d))}));function b(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=a.length,o=new Array(l);o[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[p]="string"==typeof e?e:i,o[1]=r;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var n=a(87462),i=(a(67294),a(3905));const l={title:"Table Operations",description:"Table Operations: Row, Column, Quick Import, Export & Import"},o=void 0,r={unversionedId:"setup-and-usages/table-operations",id:"version-0.109.7/setup-and-usages/table-operations",title:"Table Operations",description:"Table Operations: Row, Column, Quick Import, Export & Import",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/020.table-operations.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/table-operations",permalink:"/0.109.7/setup-and-usages/table-operations",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/020.table-operations.md",tags:[],version:"0.109.7",sidebarPosition:20,frontMatter:{title:"Table Operations",description:"Table Operations: Row, Column, Quick Import, Export & Import"},sidebar:"tutorialSidebar",previous:{title:"Dashboard",permalink:"/0.109.7/setup-and-usages/dashboard"},next:{title:"Column Operations",permalink:"/0.109.7/setup-and-usages/column-operations"}},s={},c=[{value:"Table",id:"table",level:2},{value:"Table Create",id:"table-create",level:3},{value:"Table Rename",id:"table-rename",level:3},{value:"Table Delete",id:"table-delete",level:3},{value:"Column",id:"column",level:2},{value:"Column Add",id:"column-add",level:3},{value:"Column Edit",id:"column-edit",level:3},{value:"Column Delete",id:"column-delete",level:3},{value:"Row",id:"row",level:2},{value:"Row Add (Using Form)",id:"row-add-using-form",level:3},{value:"Row Add (Using Table Row at bottom of page)",id:"row-add-using-table-row-at-bottom-of-page",level:3},{value:"Row Add (Pressing Enter Key from Previous Row)",id:"row-add-pressing-enter-key-from-previous-row",level:3},{value:"Row Edit",id:"row-edit",level:3},{value:"Row Delete",id:"row-delete",level:3},{value:"Quick Import",id:"quick-import",level:2},{value:"Import Airtable into an Existing Project",id:"import-airtable-into-an-existing-project",level:3},{value:"Import CSV data into an Existing Project",id:"import-csv-data-into-an-existing-project",level:3},{value:"Import Excel data into an Existing Project",id:"import-excel-data-into-an-existing-project",level:3},{value:"Export Data",id:"export-data",level:2},{value:"Import Data",id:"import-data",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,i.kt)(p,(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Once you have created a new NocoDB project you can open it, In the browser, the URL would be like ",(0,i.kt)("inlineCode",{parentName:"p"},"example.com/#/default/"),"."),(0,i.kt)("h2",{id:"table"},"Table"),(0,i.kt)("h3",{id:"table-create"},"Table Create"),(0,i.kt)("p",null,"On project dashboard, click on ",(0,i.kt)("inlineCode",{parentName:"p"},"Add new table")," button"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/0b1d0b89-b3c6-4c3c-8208-4b6afce67d23",alt:"table-create-button"})),(0,i.kt)("p",null,"Provide a name for the table & click ",(0,i.kt)("inlineCode",{parentName:"p"},"Create Table")," button."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/fceb6c48-e0d6-428c-bb16-d2da4e38a81f",alt:"table-create-modal"})),(0,i.kt)("p",null,"After the successful submission, the table will be created and open on a new grid. "),(0,i.kt)("img",{width:"1504",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795081-f41ebd4d-7fa9-4f65-a66f-3d2375925106.png"}),(0,i.kt)("h3",{id:"table-rename"},"Table Rename"),(0,i.kt)("p",null,"Right click on Table name on left hand project-tree menu, select ",(0,i.kt)("inlineCode",{parentName:"p"},"Rename")),(0,i.kt)("img",{width:"606",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795096-82b007fb-f57a-4141-938e-be502b1fb2cd.png"}),(0,i.kt)("p",null,"In modal popup, enter new table name and click ",(0,i.kt)("inlineCode",{parentName:"p"},"Submit")," button"),(0,i.kt)("img",{width:"1506",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795119-4aeb05e1-16d5-4b4f-bf6c-81752234d946.png"}),(0,i.kt)("h3",{id:"table-delete"},"Table Delete"),(0,i.kt)("p",null,"Right click on Table name on left hand project-tree menu, select ",(0,i.kt)("inlineCode",{parentName:"p"},"Delete")),(0,i.kt)("img",{width:"641",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795140-4fe71896-0802-45dd-9c93-64e51925be57.png"}),(0,i.kt)("p",null,"Click Yes to confirm the table deletion"),(0,i.kt)("img",{width:"1507",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795152-9bdbf8df-846e-42f3-89d0-c68bce022cc1.png"}),(0,i.kt)("h2",{id:"column"},"Column"),(0,i.kt)("h3",{id:"column-add"},"Column Add"),(0,i.kt)("p",null,"Click the ",(0,i.kt)("inlineCode",{parentName:"p"},"+")," icon on the right corner of the table."),(0,i.kt)("img",{width:"352",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189053971-a3d29b3b-1177-49fe-8178-8868528fe3e7.png"}),(0,i.kt)("p",null,"After the click, it will show a menu and you can enter the column name and choose the column type. (See ",(0,i.kt)("a",{parentName:"p",href:"./column-types"},"Column Types")," for the full list)."),(0,i.kt)("img",{width:"459",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189073266-a0f19e2e-5dd2-4343-8c74-4ef709da272c.png"}),(0,i.kt)("p",null,"You can also click ",(0,i.kt)("inlineCode",{parentName:"p"},"Show more")," for additional menu options."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/222749857-0e793db2-a5d2-4b54-8d23-2a0cbbec8f5d.png",alt:"Screenshot 2023-03-03 at 8 13 07 PM"})),(0,i.kt)("p",null,"Click ",(0,i.kt)("inlineCode",{parentName:"p"},"Save")," button to create the new column. "),(0,i.kt)("img",{width:"1509",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795274-08483315-5538-4685-8c08-261a9c2dfe14.png"}),(0,i.kt)("h3",{id:"column-edit"},"Column Edit"),(0,i.kt)("p",null,"To edit column properties, click the down arrow, select ",(0,i.kt)("inlineCode",{parentName:"p"},"Edit")," from the menu. "),(0,i.kt)("img",{width:"230",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189077129-dfb7a815-3fc7-41ea-b72c-e57f3c30a7f4.png"}),"You will be able to edit column name & associated datatype using pop-up modal. You can also click `Show more` for additional menu options.",(0,i.kt)("img",{width:"497",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189077270-7acdc818-3747-4307-93fb-e970cb7936f9.png"}),(0,i.kt)("p",null,"Prior to v0.104.3, Advanced menu by default displayed developer specific database configuration options. To avoid unintended tweaks from user, these are now hidden under an easter egg menu. To enable, double click on ",(0,i.kt)("inlineCode",{parentName:"p"},"show all"),"/",(0,i.kt)("inlineCode",{parentName:"p"},"hide all")," button in column edit modal."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/223024810-85dac1c6-87ef-4193-90cb-3a05be8ccc1d.png",alt:"Screenshot 2023-03-06 at 10 45 26 AM"})),(0,i.kt)("h3",{id:"column-delete"},"Column Delete"),(0,i.kt)("p",null,"To delete a column, click the down arrow, select ",(0,i.kt)("inlineCode",{parentName:"p"},"Delete")," from the menu. "),(0,i.kt)("img",{width:"256",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189077566-c9376e4e-9ee8-4ffa-b437-1240894a30cd.png"}),(0,i.kt)("p",null,"Click ",(0,i.kt)("inlineCode",{parentName:"p"},"Yes")," to confirm the column deletion. "),(0,i.kt)("img",{width:"1507",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795311-c2a5587e-d92f-4b88-a8a3-e20ac13c694b.png"}),(0,i.kt)("h2",{id:"row"},"Row"),(0,i.kt)("p",null,"For adding new values to the table we need new rows, new rows can be added in two methods."),(0,i.kt)("h3",{id:"row-add-using-form"},"Row Add (Using Form)"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Click the ",(0,i.kt)("inlineCode",{parentName:"li"},"+")," icon in the toolbar of the table tab. ",(0,i.kt)("img",{width:"1038",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189079143-8f3e3dd6-9b62-4fb0-9a78-a57545026d11.png"})),(0,i.kt)("li",{parentName:"ul"},"Then you can enter the values and click ",(0,i.kt)("inlineCode",{parentName:"li"},"Save row"),". ",(0,i.kt)("img",{width:"1506",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795353-2d90316f-a5e4-41af-8931-20b3c6ed08dc.png"})),(0,i.kt)("li",{parentName:"ul"},"After saving it will be there on your table. ",(0,i.kt)("img",{width:"620",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795402-d7c26ced-a009-43d9-a4a4-e3c2653225f0.png"}))),(0,i.kt)("h3",{id:"row-add-using-table-row-at-bottom-of-page"},"Row Add (Using Table Row at bottom of page)"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Click the bottom row of the table ",(0,i.kt)("inlineCode",{parentName:"li"},"+ Add new row"),".",(0,i.kt)("img",{width:"545",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189079815-9a7ea5e3-4eb7-452e-99a8-78c271f2ad1f.png"})),(0,i.kt)("li",{parentName:"ul"},"A new empty row will be created",(0,i.kt)("img",{width:"567",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189080009-3aeb70b4-92b0-4702-acb9-e5e52e31855e.png"}))),(0,i.kt)("h3",{id:"row-add-pressing-enter-key-from-previous-row"},"Row Add (Pressing Enter Key from Previous Row)"),(0,i.kt)("p",null,"When you finish editing a cell and press Enter, the cell in the next row with the same column will be highlighted."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203271676-bab64ca4-e0e4-4deb-9a62-609a97158911.png",alt:"image"})),(0,i.kt)("h3",{id:"row-edit"},"Row Edit"),(0,i.kt)("p",null,"You can start editing by any of the following methods "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Double click on cell to edit "),(0,i.kt)("li",{parentName:"ul"},"Click on cell and start typing (this way it will clear the previous content) "),(0,i.kt)("li",{parentName:"ul"},"Click on cell and press enter to start editing"),(0,i.kt)("li",{parentName:"ul"},"And it will automatically save on blur event or if inactive. ")),(0,i.kt)("h3",{id:"row-delete"},"Row Delete"),(0,i.kt)("p",null,"Right-click on anywhere in the row and then from the context menu select ",(0,i.kt)("inlineCode",{parentName:"p"},"Delete Row")," option. "),(0,i.kt)("p",null,"Bulk delete is also possible by selecting multiple rows by using the checkbox in first column and then ",(0,i.kt)("inlineCode",{parentName:"p"},"Delete Selected Rows")," options from the right click context menu."),(0,i.kt)("img",{width:"568",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189081764-9f13c286-e02a-40d0-93ea-4b1362d96827.png"}),(0,i.kt)("h2",{id:"quick-import"},"Quick Import"),(0,i.kt)("p",null,"You can use Quick Import when you have data from external sources such as Airtable, CSV file or Microsoft Excel to an existing project by either "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Hover ",(0,i.kt)("inlineCode",{parentName:"li"},"Add new table")," button in table menu, click three dots, use Quick Import to create"),(0,i.kt)("li",{parentName:"ul"},"Drag and drop CSV, JSON or Excel file to import")),(0,i.kt)("img",{width:"1505",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795025-afd81191-4743-435b-b802-88367d2663f9.png"}),(0,i.kt)("h3",{id:"import-airtable-into-an-existing-project"},"Import Airtable into an Existing Project"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"See ",(0,i.kt)("a",{parentName:"li",href:"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free"},"here"))),(0,i.kt)("h3",{id:"import-csv-data-into-an-existing-project"},"Import CSV data into an Existing Project"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Hover ",(0,i.kt)("inlineCode",{parentName:"li"},"Add new table")," button in table menu, click three dots, and click ",(0,i.kt)("inlineCode",{parentName:"li"},"CSV file")),(0,i.kt)("li",{parentName:"ul"},"Drag & drop or select files (at most 5 files) to upload or specify CSV file URL, and Click Import",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Auto-Select Field Types"),": If it is checked, column types will be detected. Otherwise, it will default to ",(0,i.kt)("inlineCode",{parentName:"li"},"SingleLineText"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Use First Row as Headers"),": If it is checked, the first row will be treated as header row."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Import Data"),": If it is checked, all data will be imported. Otherwise, only table will be created.\n",(0,i.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/35857179/197454479-1ed18dce-1d0b-4ee3-88b3-9b6a132dea2a.png",alt:"image"})))),(0,i.kt)("li",{parentName:"ul"},"You can revise the table name by double-clicking it, column name and column type. By default, the first column will be chosen as ",(0,i.kt)("a",{href:"/0.109.7/setup-and-usages/display-value",target:"_blank"},"Display Value")," and cannot be deleted.\n",(0,i.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/35857179/197454633-5b30323e-2b13-4c55-843a-948c093d373e.png",alt:"image"})),(0,i.kt)("li",{parentName:"ul"},"Click ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," to start importing process. The table will be created and the data will be imported.\n",(0,i.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/35857179/197455547-2d93df5e-a7f0-4c88-af53-990067625967.png",alt:"image"}))),(0,i.kt)("h3",{id:"import-excel-data-into-an-existing-project"},"Import Excel data into an Existing Project"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Hover ",(0,i.kt)("inlineCode",{parentName:"li"},"Add new table")," button in table menu, click three dots, and click ",(0,i.kt)("inlineCode",{parentName:"li"},"Microsoft Excel")),(0,i.kt)("li",{parentName:"ul"},"Drag & drop or select file (at most 1 file) to upload or specify Excel file URL and Click Import.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Auto-Select Field Types"),": If it is checked, column types will be detected. Otherwise, it will default to ",(0,i.kt)("inlineCode",{parentName:"li"},"SingleLineText"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Use First Row as Headers"),": If it is checked, the first row will be treated as header row."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Import Data"),": If it is checked, all data will be imported. Otherwise, only table will be created.\n",(0,i.kt)("img",{parentName:"li",src:"https://user-images.githubusercontent.com/35857179/197455788-8dd8a7d1-38f3-48c3-a05e-6ab0cf25045c.png",alt:"image"})))),(0,i.kt)("li",{parentName:"ul"},"You can revise the table name, column name and column type. By default, the first column will be chosen as ",(0,i.kt)("a",{href:"/0.109.7/setup-and-usages/display-value",target:"_blank"},"Display Value")," and cannot be deleted.")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"If your Excel file contains multiple sheets, each sheet will be stored in a separate table.")),(0,i.kt)("img",{width:"1449",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795771-77963196-8e10-4f45-b605-eb1089d6bc9b.png"}),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Click ",(0,i.kt)("inlineCode",{parentName:"p"},"Import")," to start importing process. The table(s) will be created and the data will be imported to the corresponding table(s)."),(0,i.kt)("img",{width:"1508",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795789-80366467-9778-464b-bce0-a5c0dfe97522.png"}))),(0,i.kt)("h2",{id:"export-data"},"Export Data"),(0,i.kt)("p",null,"You can export your data from a table as a CSV file by clicking the down arrow next to Table name and hover on ",(0,i.kt)("inlineCode",{parentName:"p"},"Download"),". Currently only CSV and XLSX formats are supported for export."),(0,i.kt)("img",{width:"660",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795866-a2db2a9b-d8e3-43f2-aec5-085e1932a0a5.png"}),(0,i.kt)("h2",{id:"import-data"},"Import Data"),(0,i.kt)("p",null,"You can import your data in CSV format to a table by clicking the down arrow next to Table name and hover on ",(0,i.kt)("inlineCode",{parentName:"p"},"Upload"),". Currently only CSV format is supported for upload."),(0,i.kt)("img",{width:"668",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194795880-60bf2003-0bef-45cd-aafa-1b97adb75d42.png"}))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/105fb6bf.d4c7b2c6.js b/packages/noco-docs/dist/assets/js/105fb6bf.d4c7b2c6.js new file mode 100644 index 0000000000..7d9570a406 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/105fb6bf.d4c7b2c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5408],{93163:e=>{e.exports=JSON.parse('{"label":"URL","permalink":"/tags/url","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/text-based/url","title":"URL","description":"This article explains how to create & work with an URL field.","permalink":"/fields/field-types/text-based/url"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/10779e77.f565d9f8.js b/packages/noco-docs/dist/assets/js/10779e77.f565d9f8.js new file mode 100644 index 0000000000..35271e4783 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/10779e77.f565d9f8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1990],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(r),m=a,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||i;return r?n.createElement(h,o(o({ref:t},u),{},{components:r})):n.createElement(h,o({ref:t},u))}));function h(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=r.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var n=r(87462),a=(r(67294),r(3905));const i={title:"Share View",description:"Procedures to share a view"},o=void 0,s={unversionedId:"setup-and-usages/share-view",id:"version-0.109.7/setup-and-usages/share-view",title:"Share View",description:"Procedures to share a view",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/140.share-view.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/share-view",permalink:"/0.109.7/setup-and-usages/share-view",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/140.share-view.md",tags:[],version:"0.109.7",sidebarPosition:140,frontMatter:{title:"Share View",description:"Procedures to share a view"},sidebar:"tutorialSidebar",previous:{title:"Share Base",permalink:"/0.109.7/setup-and-usages/share-base"},next:{title:"Keyboard Maneuver",permalink:"/0.109.7/setup-and-usages/keyboard-maneuver"}},l={},c=[{value:"Generate Share View",id:"generate-share-view",level:2},{value:"Access Share View",id:"access-share-view",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"generate-share-view"},"Generate Share View"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Open a table or a view")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("p",{parentName:"li"},"Click ",(0,a.kt)("inlineCode",{parentName:"p"},"Share View")," on the toolbar"))),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194689843-53ba719f-8071-4c6f-84e3-57078f0f4c4a.png",alt:"image"})),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Copy the link and share to someone")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194689920-32f1a321-d00d-48fb-bc55-99d761133c6f.png",alt:"image"})),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Optionally you can enable ",(0,a.kt)("inlineCode",{parentName:"li"},"Use Theme")," to select the share view theme (Only Form View is supported currently)")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194689949-8bee012c-cb7c-459e-9bac-c17004f55bc0.png",alt:"image"})),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"or you can enable ",(0,a.kt)("inlineCode",{parentName:"li"},"Restrict access with a password")," if you want a password-protected view")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194689978-b62b7e8d-bb8f-4da9-86e7-335af453ed2e.png",alt:"image"})),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"or you can ",(0,a.kt)("inlineCode",{parentName:"li"},"Download allowed")," if you want the people with this link can download the data")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194690197-8474381f-98ca-43e7-a343-99cd738f4b25.png",alt:"image"})),(0,a.kt)("h2",{id:"access-share-view"},"Access Share View"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Access the link. If it is password-protected, enter the password to unlock.")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194690379-e3d89df6-d9c1-4d9d-9e8c-7e59c3978d31.png",alt:"image"})),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Otherwise, you should see the share view.")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194690389-5b78e236-aacc-49c2-898e-110f95edd1e5.png",alt:"image"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/10b0edf0.7e378df6.js b/packages/noco-docs/dist/assets/js/10b0edf0.7e378df6.js new file mode 100644 index 0000000000..6b3fd6d2cf --- /dev/null +++ b/packages/noco-docs/dist/assets/js/10b0edf0.7e378df6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8946],{27046:e=>{e.exports=JSON.parse('{"label":"Checkbox","permalink":"/tags/checkbox","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/select-based/checkbox","title":"Checkbox","description":"This article explains how to create & work with a Checkbox field.","permalink":"/fields/field-types/select-based/checkbox"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1144.8045f07e.js b/packages/noco-docs/dist/assets/js/1144.8045f07e.js new file mode 100644 index 0000000000..fb5b69e1d2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1144.8045f07e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1144],{71144:(c,s,o)=>{o.r(s)}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/118.1d6360db.js b/packages/noco-docs/dist/assets/js/118.1d6360db.js new file mode 100644 index 0000000000..2a2293a3ee --- /dev/null +++ b/packages/noco-docs/dist/assets/js/118.1d6360db.js @@ -0,0 +1,2 @@ +/*! For license information please see 118.1d6360db.js.LICENSE.txt */ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[118],{9669:(t,e,n)=>{t.exports=n(51609)},55448:(t,e,n)=>{"use strict";var r=n(64867),o=n(36026),i=n(4372),a=n(15327),s=n(94097),u=n(84109),c=n(67985),l=n(85061),f=n(77874),h=n(65263);t.exports=function(t){return new Promise((function(e,n){var p,d=t.data,y=t.headers,v=t.responseType;function b(){t.cancelToken&&t.cancelToken.unsubscribe(p),t.signal&&t.signal.removeEventListener("abort",p)}r.isFormData(d)&&delete y["Content-Type"];var g=new XMLHttpRequest;if(t.auth){var m=t.auth.username||"",w=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";y.Authorization="Basic "+btoa(m+":"+w)}var _=s(t.baseURL,t.url);function x(){if(g){var r="getAllResponseHeaders"in g?u(g.getAllResponseHeaders()):null,i={data:v&&"text"!==v&&"json"!==v?g.response:g.responseText,status:g.status,statusText:g.statusText,headers:r,config:t,request:g};o((function(t){e(t),b()}),(function(t){n(t),b()}),i),g=null}}if(g.open(t.method.toUpperCase(),a(_,t.params,t.paramsSerializer),!0),g.timeout=t.timeout,"onloadend"in g?g.onloadend=x:g.onreadystatechange=function(){g&&4===g.readyState&&(0!==g.status||g.responseURL&&0===g.responseURL.indexOf("file:"))&&setTimeout(x)},g.onabort=function(){g&&(n(l("Request aborted",t,"ECONNABORTED",g)),g=null)},g.onerror=function(){n(l("Network Error",t,null,g)),g=null},g.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",r=t.transitional||f;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(l(e,t,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",g)),g=null},r.isStandardBrowserEnv()){var O=(t.withCredentials||c(_))&&t.xsrfCookieName?i.read(t.xsrfCookieName):void 0;O&&(y[t.xsrfHeaderName]=O)}"setRequestHeader"in g&&r.forEach(y,(function(t,e){void 0===d&&"content-type"===e.toLowerCase()?delete y[e]:g.setRequestHeader(e,t)})),r.isUndefined(t.withCredentials)||(g.withCredentials=!!t.withCredentials),v&&"json"!==v&&(g.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&g.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&g.upload&&g.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(p=function(t){g&&(n(!t||t&&t.type?new h("canceled"):t),g.abort(),g=null)},t.cancelToken&&t.cancelToken.subscribe(p),t.signal&&(t.signal.aborted?p():t.signal.addEventListener("abort",p))),d||(d=null),g.send(d)}))}},51609:(t,e,n)=>{"use strict";var r=n(64867),o=n(91849),i=n(30321),a=n(47185);var s=function t(e){var n=new i(e),s=o(i.prototype.request,n);return r.extend(s,i.prototype,n),r.extend(s,n),s.create=function(n){return t(a(e,n))},s}(n(45546));s.Axios=i,s.Cancel=n(65263),s.CancelToken=n(14972),s.isCancel=n(26502),s.VERSION=n(97288).version,s.all=function(t){return Promise.all(t)},s.spread=n(8713),s.isAxiosError=n(16268),t.exports=s,t.exports.default=s},65263:t=>{"use strict";function e(t){this.message=t}e.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},e.prototype.__CANCEL__=!0,t.exports=e},14972:(t,e,n)=>{"use strict";var r=n(65263);function o(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,r=n._listeners.length;for(e=0;e{"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},30321:(t,e,n)=>{"use strict";var r=n(64867),o=n(15327),i=n(80782),a=n(13572),s=n(47185),u=n(54875),c=u.validators;function l(t){this.defaults=t,this.interceptors={request:new i,response:new i}}l.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=e.transitional;void 0!==n&&u.assertOptions(n,{silentJSONParsing:c.transitional(c.boolean),forcedJSONParsing:c.transitional(c.boolean),clarifyTimeoutError:c.transitional(c.boolean)},!1);var r=[],o=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(o=o&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var i,l=[];if(this.interceptors.response.forEach((function(t){l.push(t.fulfilled,t.rejected)})),!o){var f=[a,void 0];for(Array.prototype.unshift.apply(f,r),f=f.concat(l),i=Promise.resolve(e);f.length;)i=i.then(f.shift(),f.shift());return i}for(var h=e;r.length;){var p=r.shift(),d=r.shift();try{h=p(h)}catch(y){d(y);break}}try{i=a(h)}catch(y){return Promise.reject(y)}for(;l.length;)i=i.then(l.shift(),l.shift());return i},l.prototype.getUri=function(t){return t=s(this.defaults,t),o(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(t){l.prototype[t]=function(e,n){return this.request(s(n||{},{method:t,url:e,data:(n||{}).data}))}})),r.forEach(["post","put","patch"],(function(t){l.prototype[t]=function(e,n,r){return this.request(s(r||{},{method:t,url:e,data:n}))}})),t.exports=l},80782:(t,e,n)=>{"use strict";var r=n(64867);function o(){this.handlers=[]}o.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},o.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},o.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=o},94097:(t,e,n)=>{"use strict";var r=n(91793),o=n(7303);t.exports=function(t,e){return t&&!r(e)?o(t,e):e}},85061:(t,e,n)=>{"use strict";var r=n(80481);t.exports=function(t,e,n,o,i){var a=new Error(t);return r(a,e,n,o,i)}},13572:(t,e,n)=>{"use strict";var r=n(64867),o=n(18527),i=n(26502),a=n(45546),s=n(65263);function u(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new s("canceled")}t.exports=function(t){return u(t),t.headers=t.headers||{},t.data=o.call(t,t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return u(t),e.data=o.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return i(e)||(u(t),e&&e.response&&(e.response.data=o.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},80481:t=>{"use strict";t.exports=function(t,e,n,r,o){return t.config=e,n&&(t.code=n),t.request=r,t.response=o,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},t}},47185:(t,e,n)=>{"use strict";var r=n(64867);t.exports=function(t,e){e=e||{};var n={};function o(t,e){return r.isPlainObject(t)&&r.isPlainObject(e)?r.merge(t,e):r.isPlainObject(e)?r.merge({},e):r.isArray(e)?e.slice():e}function i(n){return r.isUndefined(e[n])?r.isUndefined(t[n])?void 0:o(void 0,t[n]):o(t[n],e[n])}function a(t){if(!r.isUndefined(e[t]))return o(void 0,e[t])}function s(n){return r.isUndefined(e[n])?r.isUndefined(t[n])?void 0:o(void 0,t[n]):o(void 0,e[n])}function u(n){return n in e?o(t[n],e[n]):n in t?o(void 0,t[n]):void 0}var c={url:a,method:a,data:a,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:u};return r.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=c[t]||i,o=e(t);r.isUndefined(o)&&e!==u||(n[t]=o)})),n}},36026:(t,e,n)=>{"use strict";var r=n(85061);t.exports=function(t,e,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?e(r("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}},18527:(t,e,n)=>{"use strict";var r=n(64867),o=n(45546);t.exports=function(t,e,n){var i=this||o;return r.forEach(n,(function(n){t=n.call(i,t,e)})),t}},45546:(t,e,n)=>{"use strict";var r=n(64867),o=n(16016),i=n(80481),a=n(77874),s={"Content-Type":"application/x-www-form-urlencoded"};function u(t,e){!r.isUndefined(t)&&r.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var c,l={transitional:a,adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(c=n(55448)),c),transformRequest:[function(t,e){return o(e,"Accept"),o(e,"Content-Type"),r.isFormData(t)||r.isArrayBuffer(t)||r.isBuffer(t)||r.isStream(t)||r.isFile(t)||r.isBlob(t)?t:r.isArrayBufferView(t)?t.buffer:r.isURLSearchParams(t)?(u(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):r.isObject(t)||e&&"application/json"===e["Content-Type"]?(u(e,"application/json"),function(t,e,n){if(r.isString(t))try{return(e||JSON.parse)(t),r.trim(t)}catch(o){if("SyntaxError"!==o.name)throw o}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||l.transitional,n=e&&e.silentJSONParsing,o=e&&e.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||o&&r.isString(t)&&t.length)try{return JSON.parse(t)}catch(s){if(a){if("SyntaxError"===s.name)throw i(s,this,"E_JSON_PARSE");throw s}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(t){l.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){l.headers[t]=r.merge(s)})),t.exports=l},77874:t=>{"use strict";t.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},97288:t=>{t.exports={version:"0.26.1"}},91849:t=>{"use strict";t.exports=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r{"use strict";var r=n(64867);function o(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}t.exports=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(r.isURLSearchParams(e))i=e.toString();else{var a=[];r.forEach(e,(function(t,e){null!=t&&(r.isArray(t)?e+="[]":t=[t],r.forEach(t,(function(t){r.isDate(t)?t=t.toISOString():r.isObject(t)&&(t=JSON.stringify(t)),a.push(o(e)+"="+o(t))})))})),i=a.join("&")}if(i){var s=t.indexOf("#");-1!==s&&(t=t.slice(0,s)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t}},7303:t=>{"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},4372:(t,e,n)=>{"use strict";var r=n(64867);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,o,i,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(i)&&s.push("domain="+i),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},91793:t=>{"use strict";t.exports=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}},16268:(t,e,n)=>{"use strict";var r=n(64867);t.exports=function(t){return r.isObject(t)&&!0===t.isAxiosError}},67985:(t,e,n)=>{"use strict";var r=n(64867);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=o(window.location.href),function(e){var n=r.isString(e)?o(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},16016:(t,e,n)=>{"use strict";var r=n(64867);t.exports=function(t,e){r.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))}},84109:(t,e,n)=>{"use strict";var r=n(64867),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];t.exports=function(t){var e,n,i,a={};return t?(r.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=r.trim(t.substr(0,i)).toLowerCase(),n=r.trim(t.substr(i+1)),e){if(a[e]&&o.indexOf(e)>=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},8713:t=>{"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},54875:(t,e,n)=>{"use strict";var r=n(97288).version,o={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){o[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}}));var i={};o.transitional=function(t,e,n){function o(t,e){return"[Axios v"+r+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,r,a){if(!1===t)throw new Error(o(r," has been removed"+(e?" in "+e:"")));return e&&!i[r]&&(i[r]=!0,console.warn(o(r," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,r,a)}},t.exports={assertOptions:function(t,e,n){if("object"!=typeof t)throw new TypeError("options must be an object");for(var r=Object.keys(t),o=r.length;o-- >0;){var i=r[o],a=e[i];if(a){var s=t[i],u=void 0===s||a(s,i,t);if(!0!==u)throw new TypeError("option "+i+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+i)}},validators:o}},64867:(t,e,n)=>{"use strict";var r=n(91849),o=Object.prototype.toString;function i(t){return Array.isArray(t)}function a(t){return void 0===t}function s(t){return"[object ArrayBuffer]"===o.call(t)}function u(t){return null!==t&&"object"==typeof t}function c(t){if("[object Object]"!==o.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function l(t){return"[object Function]"===o.call(t)}function f(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),i(t))for(var n=0,r=t.length;n=0&&n<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(i=n,!1!==r&&l(n),s.call(a,n,t),typeof console===e&&n{"use strict";var r=n(64836);Object.defineProperty(e,"__esModule",{value:!0}),e.SearchResponseAdapter=void 0;var o=r(n(18698)),i=r(n(27424)),a=r(n(861)),s=r(n(38416)),u=r(n(56690)),c=r(n(89728)),l=n(38399);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h(t){for(var e=1;e3&&void 0!==arguments[3]?arguments[3]:[];(0,u.default)(this,t),this.typesenseResponse=e,this.instantsearchRequest=n,this.configuration=r,this.allTypesenseResponses=o}return(0,c.default)(t,[{key:"_adaptGroupedHits",value:function(t){var e=this,n=[];return n=t.map((function(t){var n=e._adaptHits(t.hits);return n.forEach((function(e){e.group_key=e._group_key=t.group_key,t.found&&(e._group_found=t.found)})),n})),n=this.configuration.flattenGroupedHits?n.flat():n.map((function(t){return h(h({},t[0]),{},{_grouped_hits:t})}))}},{key:"_adaptHits",value:function(t){var e=this;return t.map((function(t){var n=h({},t.document);n.objectID=t.document.id,n._snippetResult=e._adaptHighlightResult(t,"snippet"),n._highlightResult=e._adaptHighlightResult(t,"value"),n._rawTypesenseHit=t,["text_match","geo_distance_meters","curated","text_match_info","hybrid_search_info","vector_distance"].forEach((function(e){Object.keys(t).includes(e)&&!Object.keys(n).includes(e)&&(n[e]=t[e])}));var r=n[e.configuration.geoLocationField];return r&&(n._geoloc={lat:r[0],lng:r[1]}),n}))}},{key:"_adaptHighlightResult",value:function(t,e){var n={};return null!=t.highlight&&this.isHighlightPost0240RCN32Format(t.highlight)?this.adaptHighlightObject(t,n,e):this.adaptHighlightsArray(t,n,e),n}},{key:"isHighlightPost0240RCN32Format",value:function(t){return null==t.full&&null==t.snippet}},{key:"adaptHighlightsArray",value:function(t,e,n){var r=this;Object.assign.apply(Object,[e].concat((0,a.default)(Object.entries(t.document).map((function(t){var e=(0,i.default)(t,2),n=e[0],r=e[1];return(0,s.default)({},n,{value:r,matchLevel:"none",matchedWords:[]})}))))),t.highlights.forEach((function(t){e[t.field]={value:t[n]||t["".concat(n,"s")],matchLevel:"full",matchedWords:t.matched_tokens},t.indices&&(e[t.field].matchedIndices=t.indices)})),Object.entries(e).forEach((function(a){var s=(0,i.default)(a,2),u=s[0],c=s[1],l=u,f=c.value,h=c.matchLevel,p=c.matchedWords,d=c.matchedIndices;null==f?e[l]=r._adaptHighlightNullValue():Array.isArray(f)?(e[l]=[],t.document[l].forEach((function(t,i){d&&d.includes(i)?e[l].push({value:r._adaptHighlightTag("".concat(f[d.indexOf(i)]),r.instantsearchRequest.params.highlightPreTag,r.instantsearchRequest.params.highlightPostTag),matchLevel:h,matchedWords:p[i]}):"object"===(0,o.default)(t)?e[l].push(r._adaptHighlightInObjectValue(t,{},n)):e[l].push({value:"".concat(t),matchLevel:"none",matchedWords:[]})}))):"object"===(0,o.default)(f)?e[l]=r._adaptHighlightInObjectValue(f,{},n):e[l].value=r._adaptHighlightTag("".concat(f),r.instantsearchRequest.params.highlightPreTag,r.instantsearchRequest.params.highlightPostTag)}))}},{key:"adaptHighlightObject",value:function(t,e,n){Object.assign(e,this._adaptHighlightInObjectValue(t.document,t.highlight,n))}},{key:"_adaptHighlightInObjectValue",value:function(t,e,n){var r=this;return Object.assign.apply(Object,[{}].concat((0,a.default)(Object.entries(t).map((function(t){var a,u=(0,i.default)(t,2),c=u[0],l=u[1];if(null==l)a=r._adaptHighlightNullValue();else if(Array.isArray(l)){var f;a=r._adaptHighlightInArrayValue(l,null!==(f=null==e?void 0:e[c])&&void 0!==f?f:[],n)}else if("object"===(0,o.default)(l)){var h;a=r._adaptHighlightInObjectValue(l,null!==(h=null==e?void 0:e[c])&&void 0!==h?h:{},n)}else a=r._adaptHighlightInPrimitiveValue(l,null==e?void 0:e[c],n);return(0,s.default)({},c,a)})))))}},{key:"_adaptHighlightInArrayValue",value:function(t,e,n){var r=this;return t.map((function(t,i){var a;if(null==t)a=r._adaptHighlightNullValue();else if(Array.isArray(t)){var s;a=r._adaptHighlightInArrayValue(t,null!==(s=null==e?void 0:e[i])&&void 0!==s?s:[],n)}else if("object"===(0,o.default)(t)){var u;a=r._adaptHighlightInObjectValue(t,null!==(u=null==e?void 0:e[i])&&void 0!==u?u:{},n)}else a=r._adaptHighlightInPrimitiveValue(t,null==e?void 0:e[i],n);return a}))}},{key:"_adaptHighlightInPrimitiveValue",value:function(t,e,n){var r,o;return null!=e?{value:this._adaptHighlightTag("".concat(null!==(r=null!==(o=e[n])&&void 0!==o?o:e.highlight)&&void 0!==r?r:e.snippet),this.instantsearchRequest.params.highlightPreTag,this.instantsearchRequest.params.highlightPostTag),matchLevel:(e.matched_tokens||[]).length>0?"full":"none",matchedWords:e.matched_tokens||[]}:{value:this._adaptHighlightTag("".concat(t),this.instantsearchRequest.params.highlightPreTag,this.instantsearchRequest.params.highlightPostTag),matchLevel:"none",matchedWords:[]}}},{key:"_adaptHighlightNullValue",value:function(){return{value:"",matchLevel:"none",matchedWords:[]}}},{key:"_adaptFacets",value:function(t){var e={};return t.forEach((function(t){Object.assign(e,(0,s.default)({},t.field_name,Object.assign.apply(Object,[{}].concat((0,a.default)(t.counts.map((function(t){return(0,s.default)({},t.value,t.count)})))))))})),e}},{key:"_adaptFacetStats",value:function(t){var e={};return t.forEach((function(t){Object.keys(t.stats).length>0&&Object.assign(e,(0,s.default)({},t.field_name,t.stats))})),e}},{key:"_adaptRenderingContent",value:function(t){var e,n=Object.assign({},this.configuration.renderingContent);return null==(null===(e=n.facetOrdering)||void 0===e||null===(e=e.facets)||void 0===e?void 0:e.order)&&(n.facetOrdering=n.facetOrdering||{},n.facetOrdering.facets=n.facetOrdering.facets||{},n.facetOrdering.facets.order=(0,a.default)(new Set(t.map((function(t){return t.field_name})).concat(this.allTypesenseResponses.map((function(t){return t.facet_counts||[]})).flat().map((function(t){return t.field_name})).filter((function(t){return t})))))),n}},{key:"adapt",value:function(){var t=this._adaptRenderingContent(this.typesenseResponse.facet_counts||[]);return h({hits:this.typesenseResponse.grouped_hits?this._adaptGroupedHits(this.typesenseResponse.grouped_hits):this._adaptHits(this.typesenseResponse.hits),nbHits:this.typesenseResponse.found,page:this.typesenseResponse.page-1,nbPages:this._adaptNumberOfPages(),hitsPerPage:this.typesenseResponse.request_params.per_page,facets:this._adaptFacets(this.typesenseResponse.facet_counts||[]),facets_stats:this._adaptFacetStats(this.typesenseResponse.facet_counts||{}),query:this.typesenseResponse.request_params.q,processingTimeMS:this.typesenseResponse.search_time_ms},Object.keys(t).length>0?{renderingContent:t}:null)}}]),t}();e.SearchResponseAdapter=p,Object.assign(p.prototype,l.utils)},38399:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.utils=void 0;var n={_adaptHighlightTag:function(t,e,n){return t.replace(new RegExp("","g"),e||"").replace(new RegExp("","g"),n||"")},_adaptNumberOfPages:function(){var t=this.typesenseResponse.found/this.typesenseResponse.request_params.per_page;return Number.isFinite(t)?Math.ceil(t):1}};e.utils=n},18871:function(t,e,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),o=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),i=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&r(e,t,n);return o(e,t),e},a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.Errors=e.SearchClient=e.Client=void 0;var s=a(n(84339));e.Client=s.default;var u=a(n(98834));e.SearchClient=u.default;var c=i(n(46718));e.Errors=c,e.default={Client:s.default,SearchClient:u.default,Errors:c}},78480:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0},transformResponse:[function(t,e){var n=t;return void 0!==e&&"string"==typeof t&&e["content-type"]&&e["content-type"].startsWith("application/json")&&(n=JSON.parse(t)),n}]},!0!==_&&(g.timeout=1e3*h.connectionTimeoutSeconds),f&&0!==Object.keys(f).length&&(g.params=f),h.sendApiKeyAsQueryParam&&(g.params=g.params||{},g.params["x-typesense-api-key"]=h.apiKey),p&&("string"==typeof p&&0!==p.length||"object"==typeof p&&0!==Object.keys(p).length)&&(g.data=p),b&&(w=a.default.CancelToken,x=w.source(),v=function(){return x.cancel()},b.addEventListener("abort",v),g.cancelToken=x.token),[4,(0,a.default)(g)];case 2:if((O=o.sent()).status>=1&&O.status<=499&&h.setNodeHealthcheck(d,c),h.logger.debug("Request #".concat(n,": Request to Node ").concat(d.index," was made. Response Code was ").concat(O.status,".")),O.status>=200&&O.status<300)return[2,{value:Promise.resolve(O.data)}];if(O.status<500)return[2,{value:Promise.reject(h.customErrorForResponse(O,null===(i=O.data)||void 0===i?void 0:i.message))}];throw h.customErrorForResponse(O,null===(s=O.data)||void 0===s?void 0:s.message);case 3:return P=o.sent(),h.setNodeHealthcheck(d,false),r=P,h.logger.warn("Request #".concat(n,": Request to Node ").concat(d.index,' failed due to "').concat(P.code," ").concat(P.message).concat(null==P.response?"":" - "+JSON.stringify(null===(u=P.response)||void 0===u?void 0:u.data),'"')),h.logger.warn("Request #".concat(n,": Sleeping for ").concat(h.retryIntervalSeconds,"s and then retrying request...")),[4,h.timer(h.retryIntervalSeconds)];case 4:return o.sent(),[3,6];case 5:return b&&v&&b.removeEventListener("abort",v),[7];case 6:return[2]}}))},h=this,d=1,g.label=1;case 1:return d<=this.numRetriesPerRequest+1?[5,l(d)]:[3,4];case 2:if("object"==typeof(v=g.sent()))return[2,v.value];g.label=3;case 3:return d++,[3,1];case 4:return this.logger.debug("Request #".concat(n,": No retries left. Raising last error")),[2,Promise.reject(r)]}}))}))},t.prototype.getNextNode=function(t){if(void 0===t&&(t=0),null!=this.nearestNode){if(this.logger.debug("Request #".concat(t,": Nodes Health: Node ").concat(this.nearestNode.index," is ").concat(!0===this.nearestNode.isHealthy?"Healthy":"Unhealthy")),!0===this.nearestNode.isHealthy||this.nodeDueForHealthcheck(this.nearestNode,t))return this.logger.debug("Request #".concat(t,": Updated current node to Node ").concat(this.nearestNode.index)),this.nearestNode;this.logger.debug("Request #".concat(t,": Falling back to individual nodes"))}this.logger.debug("Request #".concat(t,": Nodes Health: ").concat(this.nodes.map((function(t){return"Node ".concat(t.index," is ").concat(!0===t.isHealthy?"Healthy":"Unhealthy")})).join(" || ")));for(var e=this.nodes[0],n=0;n<=this.nodes.length;n++)if(this.currentNodeIndex=(this.currentNodeIndex+1)%this.nodes.length,!0===(e=this.nodes[this.currentNodeIndex]).isHealthy||this.nodeDueForHealthcheck(e,t))return this.logger.debug("Request #".concat(t,": Updated current node to Node ").concat(e.index)),e;return this.logger.debug("Request #".concat(t,": No healthy nodes were found. Returning the next node, Node ").concat(e.index)),e},t.prototype.nodeDueForHealthcheck=function(t,e){void 0===e&&(e=0);var n=Date.now()-t.lastAccessTimestamp>1e3*this.healthcheckIntervalSeconds;return n&&this.logger.debug("Request #".concat(e,": Node ").concat(t.index," has exceeded healtcheckIntervalSeconds of ").concat(this.healthcheckIntervalSeconds,". Adding it back into rotation.")),n},t.prototype.initializeMetadataForNodes=function(){var t=this;null!=this.nearestNode&&(this.nearestNode.index="nearestNode",this.setNodeHealthcheck(this.nearestNode,c)),this.nodes.forEach((function(e,n){e.index=n,t.setNodeHealthcheck(e,c)}))},t.prototype.setNodeHealthcheck=function(t,e){t.isHealthy=e,t.lastAccessTimestamp=Date.now()},t.prototype.uriFor=function(t,e){return null!=e.url?"".concat(e.url).concat(t):"".concat(e.protocol,"://").concat(e.host,":").concat(e.port).concat(e.path).concat(t)},t.prototype.defaultHeaders=function(){var t={};return this.sendApiKeyAsQueryParam||(t["X-TYPESENSE-API-KEY"]=this.apiKey),t["Content-Type"]="application/json",t},t.prototype.timer=function(t){return r(this,void 0,void 0,(function(){return o(this,(function(e){return[2,new Promise((function(e){return setTimeout(e,1e3*t)}))]}))}))},t.prototype.customErrorForResponse=function(t,e){var n="Request failed with HTTP code ".concat(t.status);"string"==typeof e&&""!==e.trim()&&(n+=" | Server said: ".concat(e));var r=new u.default(n);return(r=400===t.status?new s.RequestMalformed(n):401===t.status?new s.RequestUnauthorized(n):404===t.status?new s.ObjectNotFound(n):409===t.status?new s.ObjectAlreadyExists(n):422===t.status?new s.ObjectUnprocessable(n):t.status>=500&&t.status<=599?new s.ServerError(n):new s.HTTPError(n)).httpStatus=t.status,r},t}();e.default=l},84339:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(72554)),i=r(n(69777)),a=r(n(46581)),s=r(n(8243)),u=r(n(95346)),c=r(n(78480)),l=r(n(62708)),f=r(n(87309)),h=r(n(47634)),p=r(n(6029)),d=r(n(31930)),y=r(n(33095)),v=r(n(29092)),b=r(n(11036)),g=r(n(51040)),m=r(n(36845)),w=function(){function t(t){var e;t.sendApiKeyAsQueryParam=null!==(e=t.sendApiKeyAsQueryParam)&&void 0!==e&&e,this.configuration=new o.default(t),this.apiCall=new i.default(this.configuration),this.debug=new h.default(this.apiCall),this.metrics=new p.default(this.apiCall),this.health=new d.default(this.apiCall),this.operations=new y.default(this.apiCall),this.multiSearch=new v.default(this.apiCall,this.configuration),this._collections=new a.default(this.apiCall),this.individualCollections={},this._aliases=new u.default(this.apiCall),this.individualAliases={},this._keys=new l.default(this.apiCall),this.individualKeys={},this._presets=new b.default(this.apiCall),this.individualPresets={},this.analytics=new m.default(this.apiCall)}return t.prototype.collections=function(t){return void 0===t?this._collections:(void 0===this.individualCollections[t]&&(this.individualCollections[t]=new s.default(t,this.apiCall,this.configuration)),this.individualCollections[t])},t.prototype.aliases=function(t){return void 0===t?this._aliases:(void 0===this.individualAliases[t]&&(this.individualAliases[t]=new c.default(t,this.apiCall)),this.individualAliases[t])},t.prototype.keys=function(t){return void 0===t?this._keys:(void 0===this.individualKeys[t]&&(this.individualKeys[t]=new f.default(t,this.apiCall)),this.individualKeys[t])},t.prototype.presets=function(t){return void 0===t?this._presets:(void 0===this.individualPresets[t]&&(this.individualPresets[t]=new g.default(t,this.apiCall)),this.individualPresets[t])},t}();e.default=w},8243:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0;n--){var r=Math.floor(Math.random()*(n+1));e=[t[r],t[n]],t[n]=e[0],t[r]=e[1]}},t}();e.default=c},47634:function(t,e){"use strict";var n=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},r=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)throw new s.ImportError("".concat(o.length-i.length," documents imported successfully, ").concat(i.length," documents failed during import. Use `error.importResults` from the raised exception to get a detailed error reason for each document."),o);return[2,o]}return[2,r]}}))}))},e.prototype.export=function(t){return void 0===t&&(t={}),i(this,void 0,void 0,(function(){return a(this,(function(e){return[2,this.apiCall.get(this.endpointPath("export"),t)]}))}))},e.prototype.exportStream=function(t){return void 0===t&&(t={}),i(this,void 0,void 0,(function(){return a(this,(function(e){return[2,this.apiCall.get(this.endpointPath("export"),t,{responseType:"stream"})]}))}))},e}(n(55586).SearchOnlyDocuments);e.default=u},7117:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},59229:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(e,n){var r=t.call(this,e)||this;return r.importResults=n,r}return o(e,t),e}(i(n(94492)).default);e.default=a},41254:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},64105:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},53836:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},20220:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},4913:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},9976:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},14959:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},r(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e}(i(n(94492)).default);e.default=a},94492:function(t,e){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},n(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0});var o=function(t){function e(e){var n=this.constructor,r=t.call(this,e)||this;return r.name=n.name,Object.setPrototypeOf(r,n.prototype),r}return r(e,t),e}(Error);e.default=o},46718:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.ImportError=e.TypesenseError=e.ServerError=e.RequestUnauthorized=e.RequestMalformed=e.ObjectUnprocessable=e.ObjectNotFound=e.ObjectAlreadyExists=e.MissingConfigurationError=e.HTTPError=void 0;var o=r(n(7117));e.HTTPError=o.default;var i=r(n(41254));e.MissingConfigurationError=i.default;var a=r(n(64105));e.ObjectAlreadyExists=a.default;var s=r(n(53836));e.ObjectNotFound=s.default;var u=r(n(20220));e.ObjectUnprocessable=u.default;var c=r(n(4913));e.RequestMalformed=c.default;var l=r(n(9976));e.RequestUnauthorized=l.default;var f=r(n(14959));e.ServerError=f.default;var h=r(n(59229));e.ImportError=h.default;var p=r(n(94492));e.TypesenseError=p.default},31930:function(t,e){"use strict";var n=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},r=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]c&&(v=this.responseCache.keys().next().value,this.responseCache.delete(v)),this.responsePromiseCache.size>c&&(v=this.responsePromiseCache.keys().next().value,this.responsePromiseCache.delete(v)),[2,y]}}))}))},t}();e.default=i},98834:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(72554)),i=r(n(69777)),a=r(n(29092)),s=n(33320),u=function(){function t(t){var e;t.sendApiKeyAsQueryParam=null===(e=t.sendApiKeyAsQueryParam)||void 0===e||e,!0===t.sendApiKeyAsQueryParam&&(t.apiKey||"").length>2e3&&(console.warn("[typesense] API Key is longer than 2000 characters which is over the allowed limit, so disabling sending it as a query parameter."),t.sendApiKeyAsQueryParam=!1),this.configuration=new o.default(t),this.apiCall=new i.default(this.configuration),this.multiSearch=new a.default(this.apiCall,this.configuration,!0),this.individualCollections={}}return t.prototype.clearCache=function(){this.multiSearch.clearCache(),Object.entries(this.individualCollections).forEach((function(t){t[0];t[1].documents().clearCache()}))},t.prototype.collections=function(t){if(t)return void 0===this.individualCollections[t]&&(this.individualCollections[t]=new s.SearchOnlyCollection(t,this.apiCall,this.configuration)),this.individualCollections[t];throw new Error("Typesense.SearchClient only supports search operations, so the collectionName that needs to be searched must be specified. Use Typesense.Client if you need to access the collection object.")},t}();e.default=u},33320:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SearchOnlyCollection=void 0;var r=n(55586),o=function(){function t(t,e,n){this.name=t,this.apiCall=e,this.configuration=n,this._documents=new r.SearchOnlyDocuments(this.name,this.apiCall,this.configuration)}return t.prototype.documents=function(){return this._documents},t}();e.SearchOnlyCollection=o},55586:function(t,e,n){"use strict";var r=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]{t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n{t.exports=function(t){if(Array.isArray(t))return t},t.exports.__esModule=!0,t.exports.default=t.exports},63405:(t,e,n)=>{var r=n(73897);t.exports=function(t){if(Array.isArray(t))return r(t)},t.exports.__esModule=!0,t.exports.default=t.exports},56690:t=>{t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.__esModule=!0,t.exports.default=t.exports},89728:(t,e,n)=>{var r=n(64062);function o(t,e){for(var n=0;n{var r=n(64062);t.exports=function(t,e,n){return(e=r(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.__esModule=!0,t.exports.default=t.exports},64836:t=>{t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports},79498:t=>{t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.__esModule=!0,t.exports.default=t.exports},68872:t=>{t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,s=[],u=!0,c=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(s.push(r.value),s.length!==e);u=!0);}catch(t){c=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return s}},t.exports.__esModule=!0,t.exports.default=t.exports},12218:t=>{t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},42281:t=>{t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.__esModule=!0,t.exports.default=t.exports},17061:(t,e,n)=>{var r=n(18698).default;function o(){"use strict";t.exports=o=function(){return n},t.exports.__esModule=!0,t.exports.default=t.exports;var e,n={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},u="function"==typeof Symbol?Symbol:{},c=u.iterator||"@@iterator",l=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function h(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(e){h=function(t,e,n){return t[e]=n}}function p(t,e,n,r){var o=e&&e.prototype instanceof w?e:w,i=Object.create(o.prototype),a=new A(r||[]);return s(i,"_invoke",{value:R(t,n,a)}),i}function d(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=p;var y="suspendedStart",v="suspendedYield",b="executing",g="completed",m={};function w(){}function _(){}function x(){}var O={};h(O,c,(function(){return this}));var P=Object.getPrototypeOf,S=P&&P(P(M([])));S&&S!==i&&a.call(S,c)&&(O=S);var C=x.prototype=w.prototype=Object.create(O);function j(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function n(o,i,s,u){var c=d(t[o],t,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==r(f)&&a.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,s,u)}),(function(t){n("throw",t,s,u)})):e.resolve(f).then((function(t){l.value=t,s(l)}),(function(t){return n("throw",t,s,u)}))}u(c.arg)}var o;s(this,"_invoke",{value:function(t,r){function i(){return new e((function(e,o){n(t,r,e,o)}))}return o=o?o.then(i,i):i()}})}function R(t,n,r){var o=y;return function(i,a){if(o===b)throw new Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:e,done:!0}}for(r.method=i,r.arg=a;;){var s=r.delegate;if(s){var u=k(s,r);if(u){if(u===m)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===y)throw o=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=b;var c=d(t,n,r);if("normal"===c.type){if(o=r.done?g:v,c.arg===m)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=g,r.method="throw",r.arg=c.arg)}}}function k(t,n){var r=n.method,o=t.iterator[r];if(o===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,k(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var i=d(o,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,m;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,m):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function T(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function N(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(T,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,i=function n(){for(;++o=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=a.call(i,"catchLoc"),c=a.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),N(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;N(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:M(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),m}},n}t.exports=o,t.exports.__esModule=!0,t.exports.default=t.exports},27424:(t,e,n)=>{var r=n(85372),o=n(68872),i=n(86116),a=n(12218);t.exports=function(t,e){return r(t)||o(t,e)||i(t,e)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},861:(t,e,n)=>{var r=n(63405),o=n(79498),i=n(86116),a=n(42281);t.exports=function(t){return r(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},95036:(t,e,n)=>{var r=n(18698).default;t.exports=function(t,e){if("object"!==r(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var o=n.call(t,e||"default");if("object"!==r(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},64062:(t,e,n)=>{var r=n(18698).default,o=n(95036);t.exports=function(t){var e=o(t,"string");return"symbol"===r(e)?e:String(e)},t.exports.__esModule=!0,t.exports.default=t.exports},18698:t=>{function e(n){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(n)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports},86116:(t,e,n)=>{var r=n(73897);t.exports=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}},t.exports.__esModule=!0,t.exports.default=t.exports},64687:(t,e,n)=>{var r=n(17061)();t.exports=r;try{regeneratorRuntime=r}catch(o){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/118.1d6360db.js.LICENSE.txt b/packages/noco-docs/dist/assets/js/118.1d6360db.js.LICENSE.txt new file mode 100644 index 0000000000..ae386fb79c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/118.1d6360db.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/packages/noco-docs/dist/assets/js/11d84c26.62b7c503.js b/packages/noco-docs/dist/assets/js/11d84c26.62b7c503.js new file mode 100644 index 0000000000..327ff376c1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/11d84c26.62b7c503.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5336],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>u});var l=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function r(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var s=l.createContext({}),d=function(e){var t=l.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},p=function(e){var t=d(e.components);return l.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},f=l.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=d(i),f=a,u=c["".concat(s,".").concat(f)]||c[f]||m[f]||n;return i?l.createElement(u,r(r({ref:t},p),{},{components:i})):l.createElement(u,r({ref:t},p))}));function u(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,r=new Array(n);r[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,r[1]=o;for(var d=2;d{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>n,metadata:()=>o,toc:()=>d});var l=i(87462),a=(i(67294),i(3905));const n={title:"Email",description:"This article explains how to create & work with an Email field.",tags:["Fields","Field types","Text based types","Email"],keywords:["Fields","Field types","Text based types","Email","Create email field"]},r=void 0,o={unversionedId:"fields/field-types/text-based/email",id:"fields/field-types/text-based/email",title:"Email",description:"This article explains how to create & work with an Email field.",source:"@site/docs/070.fields/040.field-types/010.text-based/030.email.md",sourceDirName:"070.fields/040.field-types/010.text-based",slug:"/fields/field-types/text-based/email",permalink:"/fields/field-types/text-based/email",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/010.text-based/030.email.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Text based types",permalink:"/tags/text-based-types"},{label:"Email",permalink:"/tags/email"}],version:"current",sidebarPosition:30,frontMatter:{title:"Email",description:"This article explains how to create & work with an Email field.",tags:["Fields","Field types","Text based types","Email"],keywords:["Fields","Field types","Text based types","Email","Create email field"]},sidebar:"tutorialSidebar",previous:{title:"Long text",permalink:"/fields/field-types/text-based/long-text"},next:{title:"Phone Number",permalink:"/fields/field-types/text-based/phonenumber"}},s={},d=[{value:"Create an Email field",id:"create-an-email-field",level:2},{value:"Similar text based fields",id:"similar-text-based-fields",level:2}],p={toc:d},c="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,l.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Email")," field is text based field custom-built for storing E-mail IDs. It is a special type of ",(0,a.kt)("inlineCode",{parentName:"p"},"Single line text")," field with"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Optional validation for Email ID"),(0,a.kt)("li",{parentName:"ul"},"Cell display as clickable link")),(0,a.kt)("h2",{id:"create-an-email-field"},"Create an ",(0,a.kt)("inlineCode",{parentName:"h2"},"Email")," field"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,a.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,a.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Select the field type as ",(0,a.kt)("inlineCode",{parentName:"li"},"Email")," from the dropdown."),(0,a.kt)("li",{parentName:"ol"},"Enable validation by toggling the ",(0,a.kt)("inlineCode",{parentName:"li"},"Validate Email")," checkbox (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(49737).Z,width:"2878",height:"1398"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"Specify default value without quotes."),(0,a.kt)("li",{parentName:"ul"},"Validation only ensures that the value entered is a valid email ID. It does not check if the email ID exists."))),(0,a.kt)("h2",{id:"similar-text-based-fields"},"Similar text based fields"),(0,a.kt)("p",null,"Following are the other text based fields available in NocoDB, custom-built for specific use cases."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/single-line-text"},"Single line text")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/long-text"},"Long text")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/url"},"URL")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/phonenumber"},"Phone"))))}m.isMDXComponent=!0},49737:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/email-764cb45f6208ba575ca2b5c1dabded86.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/14095bfc.09f9422f.js b/packages/noco-docs/dist/assets/js/14095bfc.09f9422f.js new file mode 100644 index 0000000000..7d79afcc63 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/14095bfc.09f9422f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5922],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var i=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=i.createContext({}),d=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=d(e.components);return i.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},f=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),p=d(n),f=o,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||l;return n?i.createElement(m,a(a({ref:t},c),{},{components:n})):i.createElement(m,a({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=n.length,a=new Array(l);a[0]=f;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[p]="string"==typeof e?e:o,a[1]=r;for(var d=2;d{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>d});var i=n(87462),o=(n(67294),n(3905));const l={title:"Single Select",description:"This article explains how to create & work with a Single select field.",tags:["Fields","Field types","Select based types","Single select"],keywords:["Fields","Field types","Select based types","Single select","Create single select field"]},a=void 0,r={unversionedId:"fields/field-types/select-based/single-select",id:"fields/field-types/select-based/single-select",title:"Single Select",description:"This article explains how to create & work with a Single select field.",source:"@site/docs/070.fields/040.field-types/030.select-based/010.single-select.md",sourceDirName:"070.fields/040.field-types/030.select-based",slug:"/fields/field-types/select-based/single-select",permalink:"/fields/field-types/select-based/single-select",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/030.select-based/010.single-select.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Select based types",permalink:"/tags/select-based-types"},{label:"Single select",permalink:"/tags/single-select"}],version:"current",sidebarPosition:10,frontMatter:{title:"Single Select",description:"This article explains how to create & work with a Single select field.",tags:["Fields","Field types","Select based types","Single select"],keywords:["Fields","Field types","Select based types","Single select","Create single select field"]},sidebar:"tutorialSidebar",previous:{title:"Currency",permalink:"/fields/field-types/numerical/currency"},next:{title:"Checkbox",permalink:"/fields/field-types/select-based/checkbox"}},s={},d=[{value:"Create a single select field",id:"create-a-single-select-field",level:2},{value:"Edit options",id:"edit-options",level:2},{value:"Rename options",id:"rename-options",level:3},{value:"Configure color for options",id:"configure-color-for-options",level:3},{value:"Re-order options",id:"re-order-options",level:3},{value:"Edit options",id:"edit-options-1",level:3},{value:"Delete options",id:"delete-options",level:3}],c={toc:d},p="wrapper";function u(e){let{components:t,...l}=e;return(0,o.kt)(p,(0,i.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Single select")," fields allow you to select a single option from a list of options. The options can be defined in the field configuration."),(0,o.kt)("h2",{id:"create-a-single-select-field"},"Create a single select field"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,o.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,o.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select the field type as ",(0,o.kt)("inlineCode",{parentName:"li"},"SingleSelect")," from the dropdown."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Add option")," button to add options."),(0,o.kt)("li",{parentName:"ol"},"Set default value for the field. The options are populated in the dropdown (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:n(35994).Z,width:"2878",height:"1538"})),(0,o.kt)("h2",{id:"edit-options"},"Edit options"),(0,o.kt)("h3",{id:"rename-options"},"Rename options"),(0,o.kt)("p",null,"You can rename options by clicking on the associated option text box. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the changes."),(0,o.kt)("h3",{id:"configure-color-for-options"},"Configure color for options"),(0,o.kt)("p",null,"You can re-configure background color for each option. This is useful when you want to highlight certain options. For example, you can configure ",(0,o.kt)("inlineCode",{parentName:"p"},"High")," option to have ",(0,o.kt)("inlineCode",{parentName:"p"},"red")," background color.\nTo configure, click on the ",(0,o.kt)("inlineCode",{parentName:"p"},"color")," icon next to the option. Select the color from the color picker and click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:n(71343).Z,width:"2876",height:"1506"})),(0,o.kt)("h3",{id:"re-order-options"},"Re-order options"),(0,o.kt)("p",null,"You can re-order options by dragging and dropping the options. To re-order, click on the ",(0,o.kt)("inlineCode",{parentName:"p"},"drag")," icon next to the option and drag it to the desired position. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the order."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:n(3176).Z,width:"2874",height:"1554"})),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The order defined for the options will be used in cells dropdown as well.")),(0,o.kt)("h3",{id:"edit-options-1"},"Edit options"),(0,o.kt)("p",null,"You can rename options by clicking on the associated option text box. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the changes."),(0,o.kt)("h3",{id:"delete-options"},"Delete options"),(0,o.kt)("p",null,"You can delete options by clicking on the ",(0,o.kt)("inlineCode",{parentName:"p"},"x")," icon next to the option. You can undo the delete by clicking on the ",(0,o.kt)("inlineCode",{parentName:"p"},"undo")," icon next to the option. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the changes."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"On removing an option, the option value will be removed from all the cells."),(0,o.kt)("li",{parentName:"ul"},"If the option value is set as default value for the field, then the default value will be removed.\n:::")),(0,o.kt)("p",{parentName:"admonition"},(0,o.kt)("img",{alt:"image",src:n(54381).Z,width:"2878",height:"1550"})),(0,o.kt)("h2",{parentName:"admonition",id:"similar-select-based-fields"},"Similar select based fields"),(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/fields/field-types/select-based/multi-select"},"Multi select")))))}u.isMDXComponent=!0},71343:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/options-change-colour-08270506854710a13f2945a006fd3779.png"},54381:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/options-remove-9e5b6dcf0682be419ac34c21db0b5716.png"},3176:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/options-reorder-1ee3cf6240593e4055bd781a0c116949.png"},35994:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/singleselect-0d82c6b862285fa9b33214680b7e6787.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/147f12f7.12c002ab.js b/packages/noco-docs/dist/assets/js/147f12f7.12c002ab.js new file mode 100644 index 0000000000..6ef8f8f70d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/147f12f7.12c002ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4918],{28123:e=>{e.exports=JSON.parse('{"label":"Rename","permalink":"/tags/rename","allTagsPath":"/tags","count":5,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"},{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"tables/actions-on-table","title":"Actions on table","description":"Learn how to rename, duplicate, and delete a table in NocoDB.","permalink":"/tables/actions-on-table"},{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"workspaces/actions-on-workspace","title":"Actions on workspace","description":"This article explains how to rename or delete a workspace.","permalink":"/workspaces/actions-on-workspace"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/14d6025d.cce9c4f9.js b/packages/noco-docs/dist/assets/js/14d6025d.cce9c4f9.js new file mode 100644 index 0000000000..eceb322f67 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/14d6025d.cce9c4f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7539],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>u});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=r.createContext({}),p=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},s=function(e){var t=p(e.components);return r.createElement(o.Provider,{value:t},e.children)},m="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,s=d(e,["components","mdxType","originalType","parentName"]),m=p(a),c=n,u=m["".concat(o,".").concat(c)]||m[c]||f[c]||l;return a?r.createElement(u,i(i({ref:t},s),{},{components:a})):r.createElement(u,i({ref:t},s))}));function u(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var d={};for(var o in t)hasOwnProperty.call(t,o)&&(d[o]=t[o]);d.originalType=e,d[m]="string"==typeof e?e:n,i[1]=d;for(var p=2;p{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>f,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Date",description:"This article explains how to create & work with a Date field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create date field"]},i=void 0,d={unversionedId:"fields/field-types/date-time-based/date",id:"fields/field-types/date-time-based/date",title:"Date",description:"This article explains how to create & work with a Date field.",source:"@site/docs/070.fields/040.field-types/070.date-time-based/020.date.md",sourceDirName:"070.fields/040.field-types/070.date-time-based",slug:"/fields/field-types/date-time-based/date",permalink:"/fields/field-types/date-time-based/date",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/070.date-time-based/020.date.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Date & Time",permalink:"/tags/date-time"}],version:"current",sidebarPosition:20,frontMatter:{title:"Date",description:"This article explains how to create & work with a Date field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create date field"]},sidebar:"tutorialSidebar",previous:{title:"Date Time",permalink:"/fields/field-types/date-time-based/date-time"},next:{title:"Time",permalink:"/fields/field-types/date-time-based/time"}},o={},p=[{value:"Create a date field",id:"create-a-date-field",level:2},{value:"Supported date formats",id:"supported-date-formats",level:3},{value:"Related fields",id:"related-fields",level:2}],s={toc:p},m="wrapper";function f(e){let{components:t,...l}=e;return(0,n.kt)(m,(0,r.Z)({},s,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Date")," field type is used to store date values. NocoDB supports a wide range of date formats, as detailed in the table below."),(0,n.kt)("h2",{id:"create-a-date-field"},"Create a date field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Date")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Configure ",(0,n.kt)("inlineCode",{parentName:"li"},"Date Format")),(0,n.kt)("li",{parentName:"ol"},"Configure default value (Optional)"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(24176).Z,width:"2876",height:"1336"})),(0,n.kt)("h3",{id:"supported-date-formats"},"Supported date formats"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Format"),(0,n.kt)("th",{parentName:"tr",align:null},"Example"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY-MM-DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023-09-22")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY/MM/DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023/09/22")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD-MM-YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22-09-2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM-DD-YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09-22-2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD/MM/YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22/09/2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM/DD/YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09/22/2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD MM YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22 09 2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM DD YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09 22 2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY MM DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023 09 22")))),(0,n.kt)("h2",{id:"related-fields"},"Related fields"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date-time"},"DateTime")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/time"},"Time")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/duration"},"Duration"))))}f.isMDXComponent=!0},24176:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/date-f31bd796ffe546c4ad5c3bd0def5df03.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/16d5baaf.80752d89.js b/packages/noco-docs/dist/assets/js/16d5baaf.80752d89.js new file mode 100644 index 0000000000..91424165df --- /dev/null +++ b/packages/noco-docs/dist/assets/js/16d5baaf.80752d89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[65],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var i=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var d=i.createContext({}),s=function(e){var t=i.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=s(e.components);return i.createElement(d.Provider,{value:t},e.children)},k="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),k=s(n),m=l,u=k["".concat(d,".").concat(m)]||k[m]||c[m]||a;return n?i.createElement(u,r(r({ref:t},p),{},{components:n})):i.createElement(u,r({ref:t},p))}));function u(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,r=new Array(a);r[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[k]="string"==typeof e?e:l,r[1]=o;for(var s=2;s{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>o,toc:()=>s});var i=n(87462),l=(n(67294),n(3905));const a={title:"Links",description:"This article explains how to create & work with a Links field.",tags:["Fields","Field types","Links based types","Links"],keywords:["Fields","Field types","Links based types","Links","Create links field"]},r=void 0,o={unversionedId:"fields/field-types/links-based/links",id:"fields/field-types/links-based/links",title:"Links",description:"This article explains how to create & work with a Links field.",source:"@site/docs/070.fields/040.field-types/040.links-based/010.links.md",sourceDirName:"070.fields/040.field-types/040.links-based",slug:"/fields/field-types/links-based/links",permalink:"/fields/field-types/links-based/links",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/040.links-based/010.links.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Links based types",permalink:"/tags/links-based-types"},{label:"Links",permalink:"/tags/links"}],version:"current",sidebarPosition:10,frontMatter:{title:"Links",description:"This article explains how to create & work with a Links field.",tags:["Fields","Field types","Links based types","Links"],keywords:["Fields","Field types","Links based types","Links","Create links field"]},sidebar:"tutorialSidebar",previous:{title:"Rating",permalink:"/fields/field-types/select-based/rating"},next:{title:"Lookup",permalink:"/fields/field-types/links-based/lookup"}},d={},s=[{value:"Create a link field",id:"create-a-link-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"List linked records",id:"list-linked-records",level:3},{value:"Link new records",id:"link-new-records",level:3},{value:"Unlink records",id:"unlink-records",level:3},{value:"Related fields",id:"related-fields",level:3}],p={toc:s},k="wrapper";function c(e){let{components:t,...a}=e;return(0,l.kt)(k,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Links")," field type is used to establish relationship between tables & create links to other records.\nNocoDB supports following types of relations:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Has-Many")," - A record in one table can have multiple records in another table. ",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Example: A ",(0,l.kt)("inlineCode",{parentName:"li"},"Country")," can have multiple ",(0,l.kt)("inlineCode",{parentName:"li"},"Cities"),"."))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Belongs-to")," - Multiple records in one table can have a single record in another table. ",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Example: A ",(0,l.kt)("inlineCode",{parentName:"li"},"City")," ",(0,l.kt)("inlineCode",{parentName:"li"},"Belongs-to")," a ",(0,l.kt)("inlineCode",{parentName:"li"},"Country"),"."))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Many-to-Many")," - Multiple records in one table can have multiple records in another table. ",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Example: A ",(0,l.kt)("inlineCode",{parentName:"li"},"Student")," can have multiple ",(0,l.kt)("inlineCode",{parentName:"li"},"Subjects")," & a ",(0,l.kt)("inlineCode",{parentName:"li"},"Subject")," can have multiple ",(0,l.kt)("inlineCode",{parentName:"li"},"Students"),". ")))),(0,l.kt)("admonition",{type:"note"},(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"Links can be created only between tables in the same database."),(0,l.kt)("li",{parentName:"ul"},"Self-referencing links are supported. (Link to the same table)"),(0,l.kt)("li",{parentName:"ul"},"For every ",(0,l.kt)("inlineCode",{parentName:"li"},"Has-Many")," relation defined, NocoDB augments ",(0,l.kt)("inlineCode",{parentName:"li"},"Belongs-to")," relationship field in the adjacent table automatically"))),(0,l.kt)("h2",{id:"create-a-link-field"},"Create a link field"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,l.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,l.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,l.kt)("li",{parentName:"ol"},"Select the field type as ",(0,l.kt)("inlineCode",{parentName:"li"},"Links")," from the dropdown."),(0,l.kt)("li",{parentName:"ol"},"Select the relation type : Either ",(0,l.kt)("inlineCode",{parentName:"li"},"Has-Many")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"Many-to-Many"),"."),(0,l.kt)("li",{parentName:"ol"},"Select the table to which the relation is to be established with."),(0,l.kt)("li",{parentName:"ol"},"Configure label to be used for display in the cell. Defaults to ",(0,l.kt)("inlineCode",{parentName:"li"},"Link"),", ",(0,l.kt)("inlineCode",{parentName:"li"},"Links")," (Optional)."),(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:n(94296).Z,width:"2872",height:"1546"})),(0,l.kt)("h3",{id:"cell-display"},"Cell display"),(0,l.kt)("p",null,"The cell will display number of links for a record to the related table. "),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:n(54082).Z,width:"1269",height:"512"})),(0,l.kt)("p",null,"Clicking on the link-text will open a ",(0,l.kt)("inlineCode",{parentName:"p"},"Linked Records")," modal with the list of links & associated additional information."),(0,l.kt)("h3",{id:"list-linked-records"},"List linked records"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:n(56509).Z,width:"1321",height:"868"})),(0,l.kt)("p",null,"A brief note about the modal components:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"This modal is displaying linked records for ",(0,l.kt)("inlineCode",{parentName:"li"},"PENELOPE")),(0,l.kt)("li",{parentName:"ol"},"Icon represents ",(0,l.kt)("inlineCode",{parentName:"li"},"Many-to-Many")," relation"),(0,l.kt)("li",{parentName:"ol"},"Linked records belong to ",(0,l.kt)("inlineCode",{parentName:"li"},"Film")," table"),(0,l.kt)("li",{parentName:"ol"},"Search bar, to narrow down the list of linked records displayed"),(0,l.kt)("li",{parentName:"ol"},"List (cards) of linked records"),(0,l.kt)("li",{parentName:"ol"},"To view additional information (expanded record), hover on the card & click on the ",(0,l.kt)("inlineCode",{parentName:"li"},"<>")," icon"),(0,l.kt)("li",{parentName:"ol"},"Indicates total records linked"),(0,l.kt)("li",{parentName:"ol"},"Pagination bar"),(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"+ Link more Records")," button to add new links : ",(0,l.kt)("a",{parentName:"li",href:"#link-new-records"},"Read more"))),(0,l.kt)("h3",{id:"link-new-records"},"Link new records"),(0,l.kt)("p",null,"Modal to add new links can be opened by"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Clicking on ",(0,l.kt)("inlineCode",{parentName:"li"},"+ Link more Records")," button in the ",(0,l.kt)("inlineCode",{parentName:"li"},"Linked Records")," modal"),(0,l.kt)("li",{parentName:"ul"},"Clicking on the ",(0,l.kt)("inlineCode",{parentName:"li"},"+")," icon in the cell (appears on clicking on the cell)")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:n(14115).Z,width:"791",height:"655"})),(0,l.kt)("p",null,"A brief note about the modal components:"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Links being created are for ",(0,l.kt)("inlineCode",{parentName:"li"},"PENELOPE")),(0,l.kt)("li",{parentName:"ol"},"Icon represents ",(0,l.kt)("inlineCode",{parentName:"li"},"Many-to-Many")," relation"),(0,l.kt)("li",{parentName:"ol"},"Linked records belong to ",(0,l.kt)("inlineCode",{parentName:"li"},"Film")," table"),(0,l.kt)("li",{parentName:"ol"},"Search bar, to narrow down the list of records displayed"),(0,l.kt)("li",{parentName:"ol"},"Linked record card is displayed in blue color"),(0,l.kt)("li",{parentName:"ol"},"Records available for link are displayed in white color; use expand icon on the cord to view additional information"),(0,l.kt)("li",{parentName:"ol"},"Indicates total records linked (including the ones being linked)"),(0,l.kt)("li",{parentName:"ol"},"Pagination bar")),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Multiple records can be linked at once.")),(0,l.kt)("h3",{id:"unlink-records"},"Unlink records"),(0,l.kt)("p",null,"To unlink a record, open the ",(0,l.kt)("inlineCode",{parentName:"p"},"Linked Records")," modal & click on the card of the record to be unlinked."),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Multiple records can be unlinked at once.")),(0,l.kt)("h3",{id:"related-fields"},"Related fields"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/lookup"},"Lookup")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/rollup"},"Rollup"))))}c.isMDXComponent=!0},14115:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/add-link-modal-fde55380d59bdd5d597bd38e3330dbbd.png"},56509:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/linked-record-modal-3e57fdb38dfa9be609959b9843ec65b4.png"},54082:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/links-cell-display-11ef22c835684c116f159598247e9b5d.png"},94296:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/links-66d99647e69bf8d24e49ec0bd0b72714.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/177ad845.b0dd41ef.js b/packages/noco-docs/dist/assets/js/177ad845.b0dd41ef.js new file mode 100644 index 0000000000..605e876161 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/177ad845.b0dd41ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8252],{2035:i=>{i.exports=JSON.parse('{"label":"Formula","permalink":"/tags/formula","allTagsPath":"/tags","count":6,"items":[{"id":"fields/field-types/formula/conditional-expressions","title":"Conditional expressions","description":"This article explains various conditional expressions that can be used in formula fields.","permalink":"/fields/field-types/formula/conditional-expressions"},{"id":"fields/field-types/formula/date-functions","title":"Date functions","description":"This article explains various date functions that can be used in formula fields.","permalink":"/fields/field-types/formula/date-functions"},{"id":"fields/field-types/formula/formula","title":"Formula","description":"This article explains how to create & work with a Formula field.","permalink":"/fields/field-types/formula/formula"},{"id":"fields/field-types/formula/operators","title":"Numeric and Logical Operators","description":"This article explains various numeric and logical operators that can be used in formula fields.","permalink":"/fields/field-types/formula/operators"},{"id":"fields/field-types/formula/numeric-functions","title":"Numeric functions","description":"This article explains various numeric functions that can be used in formula fields.","permalink":"/fields/field-types/formula/numeric-functions"},{"id":"fields/field-types/formula/string-functions","title":"String functions","description":"This article explains various string functions that can be used in formula fields.","permalink":"/fields/field-types/formula/string-functions"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/17896441.a1973732.js b/packages/noco-docs/dist/assets/js/17896441.a1973732.js new file mode 100644 index 0000000000..3ad3783f7f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/17896441.a1973732.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7918],{4308:(s,c,e)=>{e.d(c,{Z:()=>b});var o=e(40545),a=e(73992),n=e(18679),Z=e(15944);const b={...o.Z,Tabs:a.Z,TabItem:n.Z,Image:Z.Z}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/181f370e.86d7ec4e.js b/packages/noco-docs/dist/assets/js/181f370e.86d7ec4e.js new file mode 100644 index 0000000000..b1396eb3b3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/181f370e.86d7ec4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6786],{48513:e=>{e.exports=JSON.parse('{"label":"Barcode","permalink":"/tags/barcode","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/custom-types/barcode","title":"Barcode","description":"This article explains how to create & work with a Barcode field.","permalink":"/fields/field-types/custom-types/barcode"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/18c96d41.d9743a27.js b/packages/noco-docs/dist/assets/js/18c96d41.d9743a27.js new file mode 100644 index 0000000000..3dfc904563 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/18c96d41.d9743a27.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9449],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=d(n),c=r,f=u["".concat(s,".").concat(c)]||u[c]||m[c]||i;return n?a.createElement(f,l(l({ref:t},p),{},{components:n})):a.createElement(f,l({ref:t},p))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:r,l[1]=o;for(var d=2;d{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>d});var a=n(87462),r=(n(67294),n(3905));const i={title:"Conditional expressions",description:"This article explains various conditional expressions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Conditional expressions"]},l=void 0,o={unversionedId:"fields/field-types/formula/conditional-expressions",id:"fields/field-types/formula/conditional-expressions",title:"Conditional expressions",description:"This article explains various conditional expressions that can be used in formula fields.",source:"@site/docs/070.fields/040.field-types/060.formula/050.conditional-expressions.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/conditional-expressions",permalink:"/fields/field-types/formula/conditional-expressions",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/050.conditional-expressions.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"}],version:"current",sidebarPosition:50,frontMatter:{title:"Conditional expressions",description:"This article explains various conditional expressions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Conditional expressions"]},sidebar:"tutorialSidebar",previous:{title:"Date functions",permalink:"/fields/field-types/formula/date-functions"},next:{title:"Date Time",permalink:"/fields/field-types/date-time-based/date-time"}},s={},d=[{value:"Conditional expressions",id:"conditional-expressions",level:3},{value:"Related Articles",id:"related-articles",level:2}],p={toc:d},u="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"conditional-expressions"},"Conditional expressions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"IF")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"IF(expr, successCase, elseCase)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"IF({field} > 1, Value1, Value2)")),(0,r.kt)("td",{parentName:"tr",align:null},"successCase if ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluates to TRUE, elseCase otherwise")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SWITCH")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SWITCH(expr, [pattern, value, ..., default])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SWITCH({field}, 1, 'One', 2, 'Two', '--')")),(0,r.kt)("td",{parentName:"tr",align:null},"Switch case value based on ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," output")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"AND")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AND(expr1, [expr2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AND({field} > 2, {field} < 10)")),(0,r.kt)("td",{parentName:"tr",align:null},"TRUE if all ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluate to TRUE")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"OR")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OR(expr1, [expr2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OR({field} > 2, {field} < 10)")),(0,r.kt)("td",{parentName:"tr",align:null},"TRUE if at least one ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluates to TRUE")))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"Logical operators, along with Numerical operators can be used to build conditional ",(0,r.kt)("inlineCode",{parentName:"p"},"expressions"),". "),(0,r.kt)("p",{parentName:"admonition"},"Examples:"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre"},'IF({marksSecured} > 80, "GradeA", "GradeB") \n')),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre"},"SWITCH({quarterNumber}, \n 1, 'Jan-Mar',\n 2, 'Apr-Jun',\n 3, 'Jul-Sep',\n 4, 'Oct-Dec',\n 'INVALID'\n)\n"))),(0,r.kt)("h2",{id:"related-articles"},"Related Articles"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/operators"},"Numeric and Logical Operators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/numeric-functions"},"Numeric Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/string-functions"},"String Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/date-functions"},"Date Functions"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1970c274.334059b6.js b/packages/noco-docs/dist/assets/js/1970c274.334059b6.js new file mode 100644 index 0000000000..54c6cfb7ce --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1970c274.334059b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1140],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>h});var n=t(67294);function i(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(i[t]=e[t]);return i}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var d=n.createContext({}),s=function(e){var a=n.useContext(d),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},c=function(e){var a=s(e.components);return n.createElement(d.Provider,{value:a},e.children)},p="mdxType",k={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},b=n.forwardRef((function(e,a){var t=e.components,i=e.mdxType,o=e.originalType,d=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=s(t),b=i,h=p["".concat(d,".").concat(b)]||p[b]||k[b]||o;return t?n.createElement(h,r(r({ref:a},c),{},{components:t})):n.createElement(h,r({ref:a},c))}));function h(e,a){var t=arguments,i=a&&a.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=b;var l={};for(var d in a)hasOwnProperty.call(a,d)&&(l[d]=a[d]);l.originalType=e,l[p]="string"==typeof e?e:i,r[1]=l;for(var s=2;s{t.r(a),t.d(a,{assets:()=>d,contentTitle:()=>r,default:()=>k,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var n=t(87462),i=(t(67294),t(3905));const o={title:"Kanban",description:"Learn how to work with kanban view in NocoDB.",tags:["Views","Kanban View"],keywords:["NocoDB kanban","kanban view","kanban board","kanban view operations"]},r=void 0,l={unversionedId:"views/view-types/kanban",id:"views/view-types/kanban",title:"Kanban",description:"Learn how to work with kanban view in NocoDB.",source:"@site/docs/090.views/040.view-types/040.kanban.md",sourceDirName:"090.views/040.view-types",slug:"/views/view-types/kanban",permalink:"/views/view-types/kanban",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/040.view-types/040.kanban.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Kanban View",permalink:"/tags/kanban-view"}],version:"current",sidebarPosition:40,frontMatter:{title:"Kanban",description:"Learn how to work with kanban view in NocoDB.",tags:["Views","Kanban View"],keywords:["NocoDB kanban","kanban view","kanban board","kanban view operations"]},sidebar:"tutorialSidebar",previous:{title:"Form",permalink:"/views/view-types/form"},next:{title:"Actions on view",permalink:"/views/actions-on-view"}},d={},s=[{value:"Kanban View Actions",id:"kanban-view-actions",level:2},{value:"Kanban View Operations",id:"kanban-view-operations",level:2},{value:"Kanban View Stacked-by field Operations",id:"kanban-view-stacked-by-field-operations",level:2},{value:"Change Stacked by Field",id:"change-stacked-by-field",level:3},{value:"Add/modify Stacked-by Field Options",id:"addmodify-stacked-by-field-options",level:3},{value:"Collapse Stack",id:"collapse-stack",level:3},{value:"Delete Stack",id:"delete-stack",level:3},{value:"Reorder Stacks",id:"reorder-stacks",level:3},{value:"Kanban View Record Operations",id:"kanban-view-record-operations",level:2},{value:"Move Records within Stacks",id:"move-records-within-stacks",level:3},{value:"Add a New Record to the Kanban",id:"add-a-new-record-to-the-kanban",level:3},{value:"Edit an Existing Record on the Kanban",id:"edit-an-existing-record-on-the-kanban",level:3},{value:"Delete a Single Record from the Kanban",id:"delete-a-single-record-from-the-kanban",level:3},{value:"Related articles",id:"related-articles",level:2}],c={toc:s},p="wrapper";function k(e){let{components:a,...o}=e;return(0,i.kt)(p,(0,n.Z)({},c,o,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Kanban View allows you to visualise your data using cards as part of various stacks on the board. You can easily rearrange the cards by dragging and dropping them to different stacks. This section will cover all the operations that can be performed on the Kanban view."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"1010-2 Kanban",src:t(24427).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"kanban-view-actions"},"Kanban View Actions"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/create-view/#create-new-view"},"Create a New Kanban View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#rename-view"},"Rename an Existing Kanban View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#duplicate-view"},"Duplicate a Kanban View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#delete-view"},"Remove a Kanban View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/share-view"},"Share a Kanban View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/views-overview#view-permission-types"},"Lock Kanban View for Edits"))),(0,i.kt)("h2",{id:"kanban-view-operations"},"Kanban View Operations"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#rearranging-fields"},"Rearrange Fields Within the Kanban")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#showhide-fields"},"Show or Hide Fields Within the Kanban")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/filter"},"Apply Filters to Display Specific Records on the Kanban")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/sort"},"Sort Records on the Kanban by One or More Criteria")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/search"},"Perform Quick Searches for Specific Data Within Fields")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/download#download-data"},"Export Data to CSV or Excel Format")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#change-cover-field-kanbankanban-view"},"Change Cover Image"))),(0,i.kt)("h2",{id:"kanban-view-stacked-by-field-operations"},"Kanban View Stacked-by field Operations"),(0,i.kt)("h3",{id:"change-stacked-by-field"},"Change Stacked by Field"),(0,i.kt)("p",null,"You can change the field by which the records are stacked on the kanban view by following the steps below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Stacked by")," menu in the toolbar. "),(0,i.kt)("li",{parentName:"ol"},"Click on field name that is currently selected as the stacked-by field. "),(0,i.kt)("li",{parentName:"ol"},"From the dropdown, select the new field by which you want to stack the records. ")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Change Stacked by Field",src:t(20865).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"addmodify-stacked-by-field-options"},"Add/modify Stacked-by Field Options"),(0,i.kt)("p",null,"You can add/modify options on the stacked-by single select field by following the steps below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Stacked by")," menu in the toolbar. Dropdown lists all ",(0,i.kt)("inlineCode",{parentName:"li"},"Select Options")," that are available on this field. "),(0,i.kt)("li",{parentName:"ol"},"Add/modify as required."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save")," to save the changes.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Add/modify option on the stacked-by single select field",src:t(9440).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"collapse-stack"},"Collapse Stack"),(0,i.kt)("p",null,"To ease the view of the kanban, you can collapse the stack by following the steps below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on the dropdown icon on the stack header."),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Collapse Stack")," from the dropdown."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"Collapsed Stack")," will be displayed as vertical bars on the kanban view as displayed below.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Collapse Stack",src:t(63472).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"delete-stack"},"Delete Stack"),(0,i.kt)("p",null,"To delete a stack from the kanban view, follow the steps below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on the dropdown icon on the stack header."),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete Stack")," from the dropdown."),(0,i.kt)("li",{parentName:"ol"},"A confirmation dialog will be displayed. Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete")," to delete the stack.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Delete Stack",src:t(38357).Z,width:"2880",height:"1800"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Delete Stack Confirmation",src:t(65656).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"reorder-stacks"},"Reorder Stacks"),(0,i.kt)("p",null,"You can reorder the stacks on the kanban view by dragging and dropping the stack to the desired position."),(0,i.kt)("h2",{id:"kanban-view-record-operations"},"Kanban View Record Operations"),(0,i.kt)("h3",{id:"move-records-within-stacks"},"Move Records within Stacks"),(0,i.kt)("p",null,"You can move records within a stack by dragging and dropping the card to the desired position within the stack."),(0,i.kt)("h3",{id:"add-a-new-record-to-the-kanban"},"Add a New Record to the Kanban"),(0,i.kt)("p",null,"On kanban, you can add a new record directly to a particular stack by using ",(0,i.kt)("inlineCode",{parentName:"p"},"Add Record")," button on the stack footer. This opens up an expanded record view where you can enter the data for the new record. Once you save the record, it will be displayed on the kanban view. You can also add a new record to the table, and it will be displayed on the kanban view. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Add Record",src:t(42950).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"edit-an-existing-record-on-the-kanban"},"Edit an Existing Record on the Kanban"),(0,i.kt)("p",null,"Click on the card on the kanban view to open the record in the expanded record view. You can edit the record in the expanded record view and save it."),(0,i.kt)("h3",{id:"delete-a-single-record-from-the-kanban"},"Delete a Single Record from the Kanban"),(0,i.kt)("p",null,"Right-click on the card to access the context menu and select the ",(0,i.kt)("inlineCode",{parentName:"p"},"Delete")," option."),(0,i.kt)("h2",{id:"related-articles"},"Related articles"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/views/view-types/grid"},"Grid View"),(0,i.kt)("br",{parentName:"p"}),"\n",(0,i.kt)("a",{parentName:"p",href:"/views/view-types/kanban"},"Kanban View"),(0,i.kt)("br",{parentName:"p"}),"\n",(0,i.kt)("a",{parentName:"p",href:"/views/view-types/form"},"Form View")))}k.isMDXComponent=!0},42950:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-add-record-6d53ed410a1ee0323790496461b53aff.png"},20865:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-change-stack-a8d26dff838ea4b480a30e2db1d0624f.png"},63472:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-collapse-stack-8ec03d704b55aba7bbc1510efd0f746d.png"},65656:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-delete-stack-confirmation-e4b55be5361259d84852953931f63f8c.png"},38357:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-delete-stack-b51611d8427f1a16a295861c0c91eb94.png"},9440:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-edit-stack-options-7f9e0324e6068956dae0268031c712f7.png"},24427:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/kanban-e00b90c6413259b626deeeb6659281ea.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1a4e3797.23399ed0.js b/packages/noco-docs/dist/assets/js/1a4e3797.23399ed0.js new file mode 100644 index 0000000000..9e10703052 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1a4e3797.23399ed0.js @@ -0,0 +1 @@ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7920,9964],{99964:()=>{}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1b14dca8.333819cc.js b/packages/noco-docs/dist/assets/js/1b14dca8.333819cc.js new file mode 100644 index 0000000000..bb4050ec31 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1b14dca8.333819cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5404],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,g=p["".concat(l,".").concat(m)]||p[m]||d[m]||o;return n?a.createElement(g,i(i({ref:t},u),{},{components:n})):a.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Account Settings",description:"NocoDB provides Account Settings for managing your account or more for super admin"},i=void 0,s={unversionedId:"setup-and-usages/account-settings",id:"version-0.109.7/setup-and-usages/account-settings",title:"Account Settings",description:"NocoDB provides Account Settings for managing your account or more for super admin",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/170.account-settings.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/account-settings",permalink:"/0.109.7/setup-and-usages/account-settings",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/170.account-settings.md",tags:[],version:"0.109.7",sidebarPosition:170,frontMatter:{title:"Account Settings",description:"NocoDB provides Account Settings for managing your account or more for super admin"},sidebar:"tutorialSidebar",previous:{title:"Views",permalink:"/0.109.7/setup-and-usages/views"},next:{title:"Languages",permalink:"/0.109.7/setup-and-usages/languages"}},l={},c=[{value:"Overview",id:"overview",level:2},{value:"Reset Password",id:"reset-password",level:2},{value:"Token Management",id:"token-management",level:2},{value:"User Management",id:"user-management",level:2},{value:"Organisation Level Permissions:",id:"organisation-level-permissions",level:3},{value:"Project Level Permissions:",id:"project-level-permissions",level:3},{value:"Enable / Disable Signup",id:"enable--disable-signup",level:2},{value:"App Store",id:"app-store",level:2},{value:"License",id:"license",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,"Account Settings allow you to manage your account such as your password or tokens. "),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203260408-7767daec-a862-4b33-8a6a-6706bff01eb7.png",alt:"image"})),(0,r.kt)("h2",{id:"reset-password"},"Reset Password"),(0,r.kt)("img",{width:"1500",alt:"image",src:"https://user-images.githubusercontent.com/35857179/203267251-139fff32-38a9-4f39-af4f-c2c6ec5456bb.png"}),(0,r.kt)("h2",{id:"token-management"},"Token Management"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Newly created tokens are associated with the created user and it will have all permissions that particular user has."),(0,r.kt)("li",{parentName:"ul"},"Existing token will work as it is and only be visible to the super admin.")),(0,r.kt)("img",{width:"1506",alt:"image",src:"https://user-images.githubusercontent.com/35857179/203267432-352d3038-7784-4ea5-b521-1d0252ffbf70.png"}),(0,r.kt)("p",null,"If you are a super admin, you can also manage all user roles in organization level. "),(0,r.kt)("h2",{id:"user-management"},"User Management"),(0,r.kt)("p",null,"Permissions within NocoDB are divided into two levels: Organisation level and Project level."),(0,r.kt)("h3",{id:"organisation-level-permissions"},"Organisation Level Permissions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Org Level Creator"),": Allows users to create new projects and access invited projects."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Org Level Viewer"),": Allows users to access invited projects but does not permit the creation of new projects.")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203261168-5ba75f9c-476e-4fe7-ace4-f81051f42773.png",alt:"image"})),(0,r.kt)("h3",{id:"project-level-permissions"},"Project Level Permissions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Owner"),": The user who created the project. A project can have only one owner. The owner persists until the project exists and the role is non-transferable. The owner has access to carry out any operations within the project, including deleting it."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Creator"),': Has access to carry out any operations within the project except deleting the project and removing the "Owner."'),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Editor"),": Can modify data but cannot modify the schema (add/remove columns, tables, users, and such)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Commenter"),": Can neither modify data nor schema, can only see data and can mark row-level comments."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Viewer"),": Can only see data.")),(0,r.kt)("p",null,"Additional access details for project level permissions can be found ",(0,r.kt)("a",{parentName:"p",href:"https://docs.nocodb.com/setup-and-usages/team-and-auth#advanced-options--configurations"},"here"),'.\nPlease note that the above-mentioned Project Level Permissions are additional to the already defined Organisation Level Permissions.\nIn addition to the previously defined permissions, NocoDB also includes the role of "Super Admin." The "Super Admin" is the first user to sign up on this NocoDB installation. An organisation can have only one "Super Admin" and this role is non-transferable. The "Super Admin" will have the equivalent permissions of an "Org Level Creator" and "Owner" for all projects within the organisation.'),(0,r.kt)("h2",{id:"enable--disable-signup"},"Enable / Disable Signup"),(0,r.kt)("p",null,"Signup without an invitation is disabled by default and can be managed from UI by a super admin."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203268555-a17fcd39-5fb9-448d-aeaf-e55cbf49f6c5.png",alt:"image"})),(0,r.kt)("h2",{id:"app-store"},"App Store"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203267619-24a8f5f5-1c8c-4419-a7a1-be4377fe6216.png",alt:"image"})),(0,r.kt)("p",null,"We provide different integrations in three main categories."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Category"),(0,r.kt)("th",{parentName:"tr",align:null},"App Name"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Chat"),(0,r.kt)("td",{parentName:"tr",align:null},"Microsoft Teams ",(0,r.kt)("br",null)," Discord ",(0,r.kt)("br",null)," Twilio ",(0,r.kt)("br",null)," Whatsapp Twilio",(0,r.kt)("br",null)," Mattermost",(0,r.kt)("br",null)," Slack")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Email"),(0,r.kt)("td",{parentName:"tr",align:null},"SMTP",(0,r.kt)("br",null)," MailerSend",(0,r.kt)("br",null)," AWS SES")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Storage"),(0,r.kt)("td",{parentName:"tr",align:null},"AWS S3 ",(0,r.kt)("br",null)," Minio ",(0,r.kt)("br",null)," Google Cloud Storage ",(0,r.kt)("br",null)," Spaces ",(0,r.kt)("br",null)," Backblaze B2 ",(0,r.kt)("br",null)," Vultr Object Storage ",(0,r.kt)("br",null)," OvhCloud Object Storage ",(0,r.kt)("br",null)," Linode Object Storage ",(0,r.kt)("br",null)," UpCloud Object Storage ",(0,r.kt)("br",null)," Scaleway Object Storage")))),(0,r.kt)("h2",{id:"license"},"License"),(0,r.kt)("p",null,"You can configure NocoDB Enterprise ",(0,r.kt)("inlineCode",{parentName:"p"},"License key")," here"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/212023989-0129af0a-689d-465e-bdda-3d54399ea6b7.png",alt:"Screenshot 2023-01-12 at 2 30 57 PM"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1b3738fb.ad6025e7.js b/packages/noco-docs/dist/assets/js/1b3738fb.ad6025e7.js new file mode 100644 index 0000000000..c3661806e7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1b3738fb.ad6025e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8149],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(k,o(o({ref:t},c),{},{components:n})):a.createElement(k,o({ref:t},c))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var a=n(87462),i=(n(67294),n(3905));const r={title:"Writing unit tests",description:"Overview to Unit Testing",tags:["Engineering"]},o=void 0,l={unversionedId:"engineering/unit-testing",id:"engineering/unit-testing",title:"Writing unit tests",description:"Overview to Unit Testing",source:"@site/docs/150.engineering/040.unit-testing.md",sourceDirName:"150.engineering",slug:"/engineering/unit-testing",permalink:"/engineering/unit-testing",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/040.unit-testing.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:40,frontMatter:{title:"Writing unit tests",description:"Overview to Unit Testing",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"Development setup",permalink:"/engineering/development-setup"},next:{title:"Playwright E2E testing",permalink:"/engineering/playwright"}},s={},p=[{value:"Unit Tests",id:"unit-tests",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Setup",id:"setup",level:3},{value:"Run Tests",id:"run-tests",level:3},{value:"Folder Structure",id:"folder-structure",level:3},{value:"Factory Pattern",id:"factory-pattern",level:3},{value:"Walk through of writing a Unit Test",id:"walk-through-of-writing-a-unit-test",level:3},{value:"Configure test",id:"configure-test",level:4},{value:"Test case",id:"test-case",level:4},{value:"Integrating the New Test Suite",id:"integrating-the-new-test-suite",level:4},{value:"Seeding Sample DB (Sakila)",id:"seeding-sample-db-sakila",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"unit-tests"},"Unit Tests"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"All individual unit tests are independent of each other. We don't use any shared state between tests."),(0,i.kt)("li",{parentName:"ul"},"Test environment includes ",(0,i.kt)("inlineCode",{parentName:"li"},"sakila")," sample database and any change to it by a test is reverted before running other tests."),(0,i.kt)("li",{parentName:"ul"},"While running unit tests, it tries to connect to mysql server running on ",(0,i.kt)("inlineCode",{parentName:"li"},"localhost:3306")," with username ",(0,i.kt)("inlineCode",{parentName:"li"},"root")," and password ",(0,i.kt)("inlineCode",{parentName:"li"},"password")," (which can be configured) and if not found, it will use ",(0,i.kt)("inlineCode",{parentName:"li"},"sqlite")," as a fallback, hence no requirement of any sql server to run tests.")),(0,i.kt)("h3",{id:"pre-requisites"},"Pre-requisites"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"MySQL is preferred - however tests can fallback on SQLite too")),(0,i.kt)("h3",{id:"setup"},"Setup"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm --filter=-nocodb install\n\n# add a .env file\ncp tests/unit/.env.sample tests/unit/.env\n\n# open .env file\nopen tests/unit/.env\n")),(0,i.kt)("p",null,"Configure the following variables"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"DB_HOST : host\nDB_PORT : port\nDB_USER : username\nDB_PASSWORD : password")),(0,i.kt)("h3",{id:"run-tests"},"Run Tests"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm run test:unit\n")),(0,i.kt)("h3",{id:"folder-structure"},"Folder Structure"),(0,i.kt)("p",null,"The root folder for unit tests is ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"rest")," folder contains all the test suites for rest apis."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"model")," folder contains all the test suites for models."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"factory")," folder contains all the helper functions to create test data."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"init")," folder contains helper functions to configure test environment."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"index.test.ts")," is the root test suite file which imports all the test suites."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"TestDbMngr.ts")," is a helper class to manage test databases (i.e. creating, dropping, etc.).")),(0,i.kt)("h3",{id:"factory-pattern"},"Factory Pattern"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Use factories for create/update/delete data. No data should be directly create/updated/deleted in the test."),(0,i.kt)("li",{parentName:"ul"},"While writing a factory make sure that it can be used with as less parameters as possible and use default values for other parameters."),(0,i.kt)("li",{parentName:"ul"},"Use named parameters for factories.",(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"createUser({ email, password})\n"))),(0,i.kt)("li",{parentName:"ul"},"Use one file per factory.")),(0,i.kt)("h3",{id:"walk-through-of-writing-a-unit-test"},"Walk through of writing a Unit Test"),(0,i.kt)("p",null,"We will create an ",(0,i.kt)("inlineCode",{parentName:"p"},"Table")," test suite as an example."),(0,i.kt)("h4",{id:"configure-test"},"Configure test"),(0,i.kt)("p",null,"We will configure ",(0,i.kt)("inlineCode",{parentName:"p"},"beforeEach")," which is called before each test is executed. We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"init")," function from ",(0,i.kt)("inlineCode",{parentName:"p"},"nocodb/packages/nocodb/tests/unit/init/index.ts"),", which is a helper function which configures the test environment(i.e resetting state, etc.)."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"init")," does the following things -"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"It initializes a ",(0,i.kt)("inlineCode",{parentName:"li"},"Noco")," instance(reused in all tests)."),(0,i.kt)("li",{parentName:"ul"},"Restores ",(0,i.kt)("inlineCode",{parentName:"li"},"meta")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"sakila")," database to its initial state."),(0,i.kt)("li",{parentName:"ul"},"Creates the root user."),(0,i.kt)("li",{parentName:"ul"},"Returns ",(0,i.kt)("inlineCode",{parentName:"li"},"context")," which has ",(0,i.kt)("inlineCode",{parentName:"li"},"auth token")," for the created user, node server instance(",(0,i.kt)("inlineCode",{parentName:"li"},"app"),"), and ",(0,i.kt)("inlineCode",{parentName:"li"},"dbConfig"),".")),(0,i.kt)("p",null,"We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"createProject")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"createProject")," factories to create a project and a table."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"let context;\n\nbeforeEach(async function () {\n context = await init();\n\n project = await createProject(context);\n table = await createTable(context, project);\n});\n")),(0,i.kt)("h4",{id:"test-case"},"Test case"),(0,i.kt)("p",null,"We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"it")," function to create a test case. We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"supertest")," to make a request to the server. We use ",(0,i.kt)("inlineCode",{parentName:"p"},"expect"),"(",(0,i.kt)("inlineCode",{parentName:"p"},"chai"),") to assert the response."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"it('Get table list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/meta/projects/${project.id}/tables`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list).to.be.an('array').not.empty;\n});\n")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"We can also run individual test by using ",(0,i.kt)("inlineCode",{parentName:"p"},".only")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"describe")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"it")," function and the running the test command.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"it.only('Get table list', async () => {\n")),(0,i.kt)("h4",{id:"integrating-the-new-test-suite"},"Integrating the New Test Suite"),(0,i.kt)("p",null,"We create a new file ",(0,i.kt)("inlineCode",{parentName:"p"},"table.test.ts")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/rest/tests")," directory."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"import 'mocha';\nimport request from 'supertest';\nimport init from '../../init';\nimport { createTable, getAllTables } from '../../factory/table';\nimport { createProject } from '../../factory/project';\nimport { defaultColumns } from '../../factory/column';\nimport Model from '../../../../src/lib/models/Model';\nimport { expect } from 'chai';\n\nfunction tableTest() {\n let context;\n let project;\n let table;\n\n beforeEach(async function () {\n context = await init();\n\n project = await createProject(context);\n table = await createTable(context, project);\n });\n\n it('Get table list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/meta/projects/${project.id}/tables`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list).to.be.an('array').not.empty;\n });\n}\n\nexport default function () {\n describe('Table', tableTests);\n}\n")),(0,i.kt)("p",null,"We can then import the ",(0,i.kt)("inlineCode",{parentName:"p"},"Table")," test suite to ",(0,i.kt)("inlineCode",{parentName:"p"},"Rest")," test suite in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/rest/index.test.ts")," file(",(0,i.kt)("inlineCode",{parentName:"p"},"Rest")," test suite is imported in the root test suite file which is ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/index.test.ts"),")."),(0,i.kt)("h3",{id:"seeding-sample-db-sakila"},"Seeding Sample DB (Sakila)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"\nfunction tableTest() {\n let context;\n let sakilaProject: Project;\n let customerTable: Model;\n\n beforeEach(async function () {\n context = await init();\n \n /******* Start : Seeding sample database **********/\n sakilaProject = await createSakilaProject(context);\n /******* End : Seeding sample database **********/\n \n customerTable = await getTable({project: sakilaProject, name: 'customer'})\n });\n\n it('Get table data list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list[0]['FirstName']).to.equal('MARY');\n });\n}\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1be78505.257bb2d5.js b/packages/noco-docs/dist/assets/js/1be78505.257bb2d5.js new file mode 100644 index 0000000000..ffe58999d6 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1be78505.257bb2d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9514,4248],{81299:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ge});var a=n(67294),o=n(86010),l=n(35463),r=n(23702),c=n(60246),i=n(78259),s=n(58801),d=n(84432),m=n(66945),u=n(97325),b=n(72957),p=n(43266);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),l=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(l.current?l.current=!1:a>=r?(c(),o(!1)):a{e.location.hash&&(l.current=!0,o(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(58986),g=n(16550),v=n(13488),k=n(20107),_=n(96811),C=n(87462);function S(e){return a.createElement("svg",(0,C.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const I={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function N(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",I.collapseSidebarButton),onClick:t},a.createElement(S,{className:I.collapseSidebarButtonIcon}))}var T=n(65830),x=n(43768);const Z=Symbol("EmptyContext"),B=a.createContext(Z);function y(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),l=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return a.createElement(B.Provider,{value:l},t)}var w=n(54639),L=n(69003),A=n(83699),M=n(51048);function F(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function H(e){let{item:t,onItemClick:n,activePath:l,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,k.L)(),f=function(e){const t=(0,M.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,l),v=(0,L.Mg)(h,l),{collapsed:_,setCollapsed:S}=(0,w.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(B);if(e===Z)throw new x.i6("DocSidebarItemsExpandedStateProvider");return e}(),T=function(e){void 0===e&&(e=!_),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const l=(0,x.D9)(t);(0,a.useEffect)((()=>{t&&!l&&n&&o(!1)}),[t,l,n,o])}({isActive:g,collapsed:_,updateCollapsed:T}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":_},p)},a.createElement("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v})},a.createElement(A.Z,(0,C.Z)({className:(0,o.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?T(!1):(e.preventDefault(),T())}:()=>{n?.(t)},"aria-current":v?"page":void 0,"aria-expanded":b?!_:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(F,{categoryLabel:u,onClick:e=>{e.preventDefault(),T()}})),a.createElement(w.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:_},a.createElement(j,{items:m,tabIndex:_?-1:0,onItemClick:n,activePath:l,level:c+1})))}var P=n(2735),W=n(14082);const D={menuExternalLink:"menuExternalLink_NmtK"};function R(e){let{item:t,onItemClick:n,activePath:l,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,l),E=(0,P.Z)(m);return a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(A.Z,(0,C.Z)({className:(0,o.Z)("menu__link",!E&&D.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(W.Z,null)))}const V={menuHtmlItem:"menuHtmlItem_M9Kj"};function z(e){let{item:t,level:n,index:l}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,o.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[V.menuHtmlItem,"menu__list-item"],s),key:l,dangerouslySetInnerHTML:{__html:c}})}function U(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(H,(0,C.Z)({item:t},n));case"html":return a.createElement(z,(0,C.Z)({item:t},n));default:return a.createElement(R,(0,C.Z)({item:t},n))}}function K(e){let{items:t,...n}=e;return a.createElement(y,null,t.map(((e,t)=>a.createElement(U,(0,C.Z)({key:t,item:e,index:t},n)))))}const j=(0,a.memo)(K),q={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function G(e){let{path:t,sidebar:n,className:l}=e;const c=function(){const{isActive:e}=(0,T.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",q.menu,c&&q.menuWithAnnouncementBar,l)},a.createElement("ul",{className:(0,o.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:n,activePath:t,level:1})))}const Y="sidebar_njMd",O="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",J="sidebarLogo_isFc";function Q(e){let{path:t,sidebar:n,onCollapse:l,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,k.L)();return a.createElement("div",{className:(0,o.Z)(Y,c&&O,r&&X)},c&&a.createElement(_.Z,{tabIndex:-1,className:J}),a.createElement(G,{path:t,sidebar:n}),i&&a.createElement(N,{onClick:l}))}const $=a.memo(Q);var ee=n(53086),te=n(60735);const ne=e=>{let{sidebar:t,path:n}=e;const l=(0,te.e)();return a.createElement("ul",{className:(0,o.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(j,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&l.toggle(),"link"===e.type&&l.toggle()},level:1}))};function ae(e){return a.createElement(ee.Zo,{component:ne,props:e})}const oe=a.memo(ae);function le(e){const t=(0,v.i)(),n="desktop"===t||"ssr"===t,o="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement($,e),o&&a.createElement(oe,e))}const re={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function ce(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:re.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(S,{className:re.expandButtonIcon}))}const ie={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function se(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function de(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:l}=e;const{pathname:c}=(0,g.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),!i&&(0,f.n)()&&s(!0),l((e=>!e))}),[l,i]);return a.createElement("aside",{className:(0,o.Z)(r.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&s(!0)}},a.createElement(se,null,a.createElement("div",{className:(0,o.Z)(ie.sidebarViewport,i&&ie.sidebarViewportHidden)},a.createElement(le,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(ce,{toggleSidebar:d}))))}const me={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function ue(e){let{hiddenSidebarContainer:t,children:n}=e;const l=(0,d.V)();return a.createElement("main",{className:(0,o.Z)(me.docMainContainer,(t||!l)&&me.docMainContainerEnhanced)},a.createElement("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",me.docItemWrapper,t&&me.docItemWrapperEnhanced)},n))}const be={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function pe(e){let{children:t}=e;const n=(0,d.V)(),[o,l]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:be.docsWrapper},a.createElement(E,null),a.createElement("div",{className:be.docPage},n&&a.createElement(de,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:l}),a.createElement(ue,{hiddenSidebarContainer:o},t)))}var he=n(74248),Ee=n(33647);function fe(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(Ee.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(l.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function ge(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(he.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(fe,e),a.createElement(l.FG,{className:(0,o.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(pe,null,c)))))}},74248:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(67294),o=n(97325),l=n(35463),r=n(66945);function c(){return a.createElement(a.Fragment,null,a.createElement(l.d,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},58801:(e,t,n)=>{n.d(t,{E:()=>c,q:()=>r});var a=n(67294),o=n(43768);const l=a.createContext(null);function r(e){let{children:t,version:n}=e;return a.createElement(l.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(l);if(null===e)throw new o.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1c2ab191.32696376.js b/packages/noco-docs/dist/assets/js/1c2ab191.32696376.js new file mode 100644 index 0000000000..b1d39190cd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1c2ab191.32696376.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5518],{84031:e=>{e.exports=JSON.parse('{"label":"Overview","permalink":"/tags/overview","allTagsPath":"/tags","count":12,"items":[{"id":"bases/base-overview","title":"Base overview","description":"This article explains the concept of bases in NocoDB.","permalink":"/bases/base-overview"},{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"data-sources/data-source-overview","title":"Data sources overview","description":"NocoDB Data-Source sync, access control & re-config","permalink":"/data-sources/data-source-overview"},{"id":"fields/fields-overview","title":"Fields overview","description":"This article discusses various field types that NocoDB offers.","permalink":"/fields/fields-overview"},{"id":"records/records-overview","title":"Records overview","description":"Learn how to create, import, and manage records in NocoDB.","permalink":"/records/records-overview"},{"id":"roles-and-permissions/roles-permissions-overview","title":"Roles & permissions overview","description":"Learn about roles and permissions in NocoDB.","permalink":"/roles-and-permissions/roles-permissions-overview"},{"id":"table-details/table-details-overview","title":"Table details overview","description":"Table details overview","permalink":"/table-details/table-details-overview"},{"id":"table-operations/overview","title":"Table operations overview","description":"Learn how to work with filters, sort, group by, and more in NocoDB.","permalink":"/table-operations/overview"},{"id":"tables/table-overview","title":"Table overview","description":"Learn how to create, import, and manage tables in NocoDB.","permalink":"/tables/table-overview"},{"id":"views/views-overview","title":"View overview","description":"Understanding Views in NocoDB!","permalink":"/views/views-overview"},{"id":"automation/webhook/webhook-overview","title":"Webhook overview","description":"Learn how to create, modify and delete webhooks.","permalink":"/automation/webhook/webhook-overview"},{"id":"workspaces/workspace-overview","title":"Workspace overview","description":"This article briefs the concept of workspaces in NocoDB.","permalink":"/workspaces/workspace-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1e403fb7.960437d1.js b/packages/noco-docs/dist/assets/js/1e403fb7.960437d1.js new file mode 100644 index 0000000000..6b84ff7319 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1e403fb7.960437d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4796],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>v});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=i.createContext({}),u=function(e){var t=i.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},w=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=u(a),w=n,v=d["".concat(s,".").concat(w)]||d[w]||c[w]||r;return a?i.createElement(v,l(l({ref:t},p),{},{components:a})):i.createElement(v,l({ref:t},p))}));function v(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=w;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:n,l[1]=o;for(var u=2;u{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>u});var i=a(87462),n=(a(67294),a(3905));const r={title:"Views",description:"Understanding Views in NocoDB!"},l=void 0,o={unversionedId:"setup-and-usages/views",id:"version-0.109.7/setup-and-usages/views",title:"Views",description:"Understanding Views in NocoDB!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/160.views.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/views",permalink:"/0.109.7/setup-and-usages/views",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/160.views.md",tags:[],version:"0.109.7",sidebarPosition:160,frontMatter:{title:"Views",description:"Understanding Views in NocoDB!"},sidebar:"tutorialSidebar",previous:{title:"Keyboard Maneuver",permalink:"/0.109.7/setup-and-usages/keyboard-maneuver"},next:{title:"Account Settings",permalink:"/0.109.7/setup-and-usages/account-settings"}},s={},u=[{value:"What's a View?",id:"whats-a-view",level:2},{value:"View Menu Bar",id:"view-menu-bar",level:2},{value:"View Types",id:"view-types",level:2},{value:"Grid View",id:"grid-view",level:3},{value:"Form View",id:"form-view",level:3},{value:"Gallery View",id:"gallery-view",level:3},{value:"Kanban View",id:"kanban-view",level:3},{value:"View Permission Types",id:"view-permission-types",level:2},{value:"Collaborative Views (default)",id:"collaborative-views-default",level:3},{value:"Locked Views",id:"locked-views",level:3},{value:"Personal Views",id:"personal-views",level:3},{value:"View Operations",id:"view-operations",level:2},{value:"Create a View",id:"create-a-view",level:3},{value:"Rename a View",id:"rename-a-view",level:3},{value:"Delete a View",id:"delete-a-view",level:3},{value:"Duplicate a View",id:"duplicate-a-view",level:3},{value:"Reorder a View",id:"reorder-a-view",level:3}],p={toc:u},d="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"whats-a-view"},"What's a View?"),(0,n.kt)("p",null,"In a table, you can use different views to display your data. You can show specific fields in a View. You can also apply Sorting or Filtering to the View. Each View is independent, which means the configuration applying to View 1 will not apply to View 2. "),(0,n.kt)("p",null,"To navigate different views, we can select the target one in the view sidebar. By default, Grid View will be created for you after creating the table. You can create multiple views of a type, as long as they have unique View names."),(0,n.kt)("h2",{id:"view-menu-bar"},"View Menu Bar"),(0,n.kt)("p",null,"To work with ",(0,n.kt)("inlineCode",{parentName:"p"},"Views"),", use View menu-bar on the right hand side - "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"<1> Toggle View menu-bar."),(0,n.kt)("li",{parentName:"ul"},"<2> Displays created view-list for the selected table",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Currently active view is high-lighted "))),(0,n.kt)("li",{parentName:"ul"},"<3> Add new view to the list")),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194814369-53fa8875-7610-4849-9a91-f94096b15b3f.png",alt:"image"})),(0,n.kt)("h2",{id:"view-types"},"View Types"),(0,n.kt)("h3",{id:"grid-view"},"Grid View"),(0,n.kt)("p",null,"Grid View, as a default type of view, allows you to display your data in a spreadsheet-like interface."),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194824161-ce5c4875-4425-40b7-b932-8176271e4f1e.png",alt:"1010-2 Grid"})),(0,n.kt)("h3",{id:"form-view"},"Form View"),(0,n.kt)("p",null,"Form View allows you to arrange fields in a form to input data."),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194824127-b400f9c8-18a7-4a37-b8c3-7d279e9976af.png",alt:"1010-2 Form"})),(0,n.kt)("p",null,"You can drag-drop columns from the form to form-field-menu-bar as requried."),(0,n.kt)("h3",{id:"gallery-view"},"Gallery View"),(0,n.kt)("p",null,"Gallery View allows you to display images as thumbnails with other fields just like a gallery."),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194824141-04c76a4e-2cae-448f-a842-c79f5bce339d.png",alt:"1010-2 Gallery"})),(0,n.kt)("h3",{id:"kanban-view"},"Kanban View"),(0,n.kt)("p",null,"Kanban View allows you to visualise your data using cards at various stacks."),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194824164-97ca897a-3af4-42ab-8812-534afaf23396.png",alt:"1010-2 Kanban"})),(0,n.kt)("h2",{id:"view-permission-types"},"View Permission Types"),(0,n.kt)("p",null,"We can apply permission to each View. By default, Collaborative Views will be used. To see or change the view type, expand ",(0,n.kt)("inlineCode",{parentName:"p"},"view-tool-bar-menu")," as shown below. "),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189328303-edbf35b5-f793-4e06-9dbf-89d045a38482.png",alt:"Screenshot 2022-09-09 at 3 46 33 PM"})),(0,n.kt)("h3",{id:"collaborative-views-default"},"Collaborative Views (default)"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Collaborators with edit permissions or higher can change the view configurations")),(0,n.kt)("h3",{id:"locked-views"},"Locked Views"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"No one can edit view configurations until it is Unlocked"),(0,n.kt)("li",{parentName:"ul"},"All collaborators can only READ data from such views")),(0,n.kt)("h3",{id:"personal-views"},"Personal Views"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Only you can edit the view configuration. "),(0,n.kt)("li",{parentName:"ul"},"Your personal views are hidden for other collaborators"),(0,n.kt)("li",{parentName:"ul"},"Are not available currently; will be enabled in future release")),(0,n.kt)("h2",{id:"view-operations"},"View Operations"),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189325592-302054da-a755-4a92-a322-80aed184ca3b.png",alt:"Screenshot 2022-09-09 at 3 27 46 PM"})),(0,n.kt)("h3",{id:"create-a-view"},"Create a View"),(0,n.kt)("p",null,"Click '+' in View-menu sidebar, as shown in <3>."),(0,n.kt)("h3",{id:"rename-a-view"},"Rename a View"),(0,n.kt)("p",null,"Double click on ",(0,n.kt)("inlineCode",{parentName:"p"},"view-name"),", edit, ",(0,n.kt)("enter",null),"."),(0,n.kt)("h3",{id:"delete-a-view"},"Delete a View"),(0,n.kt)("p",null,"Hover the target View and click the delete icon, as shown in <2>."),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"You cannot delete the very first Grid View (termed as ",(0,n.kt)("inlineCode",{parentName:"p"},"Default view"),").")),(0,n.kt)("h3",{id:"duplicate-a-view"},"Duplicate a View"),(0,n.kt)("p",null,"Hover the target View and click the copy icon, as shown in <2>."),(0,n.kt)("h3",{id:"reorder-a-view"},"Reorder a View"),(0,n.kt)("p",null,"Hover the target View and re-order it as needed by drag-drop the drag icon, as shown in <1>."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1e898359.49fc3451.js b/packages/noco-docs/dist/assets/js/1e898359.49fc3451.js new file mode 100644 index 0000000000..0663109f4b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1e898359.49fc3451.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8704],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>h});var a=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var s=a.createContext({}),c=function(e){var t=a.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(o),m=n,h=d["".concat(s,".").concat(m)]||d[m]||p[m]||r;return o?a.createElement(h,i(i({ref:t},u),{},{components:o})):a.createElement(h,i({ref:t},u))}));function h(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var c=2;c{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var a=o(87462),n=(o(67294),o(3905));const r={title:"Welcome",description:"NocoDB Documentation",slug:"/"},i=void 0,l={unversionedId:"index",id:"version-0.109.7/index",title:"Welcome",description:"NocoDB Documentation",source:"@site/versioned_docs/version-0.109.7/010.index.md",sourceDirName:".",slug:"/",permalink:"/0.109.7/",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/010.index.md",tags:[],version:"0.109.7",sidebarPosition:10,frontMatter:{title:"Welcome",description:"NocoDB Documentation",slug:"/"},sidebar:"tutorialSidebar",next:{title:"Installation",permalink:"/0.109.7/getting-started/installation"}},s={},c=[{value:"Welcome!",id:"welcome",level:2},{value:"Features",id:"features",level:2},{value:"Rich Spreadsheet Interface",id:"rich-spreadsheet-interface",level:3},{value:"App Store for Workflow Automations",id:"app-store-for-workflow-automations",level:3},{value:"Programmatic Access",id:"programmatic-access",level:3},{value:"Sync Schema",id:"sync-schema",level:3},{value:"Audit",id:"audit",level:3},{value:"Why are we building this?",id:"why-are-we-building-this",level:2},{value:"Our Mission",id:"our-mission",level:2},{value:"How can I contribute to NocoDB's development ?",id:"how-can-i-contribute-to-nocodbs-development-",level:2},{value:"Where can I join the NocoDB community?",id:"where-can-i-join-the-nocodb-community",level:2}],u={toc:c},d="wrapper";function p(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"welcome"},"Welcome!"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:o(36562).Z,width:"1584",height:"396"})),(0,n.kt)("p",null,"NocoDB is a no-code database platform that allows teams to collaborate and build applications with ease of a familiar and intuitive spreadsheet interface. This allows even non-developers or business users to become software creators."),(0,n.kt)("p",null,"NocoDB works by connecting to any relational database and transforming them into a smart spreadsheet interface! This allows you to build no-code applications collaboratively with teams. NocoDB currently works with MySQL, PostgreSQL, Microsoft SQL Server, SQLite, Amazon Aurora & MariaDB databases."),(0,n.kt)("p",null,"Also NocoDB's app store allows you to build business workflows on views with combination of Slack, Microsoft Teams, Discord, Twilio, Whatsapp, Email & any 3rd party APIs too. Plus NocoDB provides programmatic access to APIs so that you can build integrations with Zapier / Integromat and custom applications too."),(0,n.kt)("h2",{id:"features"},"Features"),(0,n.kt)("h3",{id:"rich-spreadsheet-interface"},"Rich Spreadsheet Interface"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Basic Operations: Create, Read, Update and Delete on Tables, Columns, and Rows"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Fields Operations: Sort, Filter, Hide / Unhide Columns"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Multiple Views Types: Grid (By default), Gallery, Form View and Kanban View"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","View Permissions Types: Collaborative Views, & Locked Views "),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Share Bases / Views: either Public or Private (with Password Protected)"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Variant Cell Types: ID, LinkToAnotherRecord, Lookup, Rollup, SingleLineText, Attachement, Currency, Formula and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Access Control with Roles : Fine-grained Access Control at different levels"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","and more ...")),(0,n.kt)("h3",{id:"app-store-for-workflow-automations"},"App Store for Workflow Automations"),(0,n.kt)("p",null,"We provide different integrations in three main categories. See ",(0,n.kt)("a",{href:"/0.109.7/setup-and-usages/account-settings#app-store",target:"_blank"},"App Store")," for details."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Chat : Slack, Discord, Mattermost, and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Email : AWS SES, SMTP, MailerSend, and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Storage : AWS S3, Google Cloud Storage, Minio, and etc")),(0,n.kt)("h3",{id:"programmatic-access"},"Programmatic Access"),(0,n.kt)("p",null,"We provide the following ways to let users to invoke actions in a programmatic way. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB. "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","REST APIs"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","NocoDB SDK")),(0,n.kt)("h3",{id:"sync-schema"},"Sync Schema"),(0,n.kt)("p",null,"We allow you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from environment to others. See ",(0,n.kt)("a",{href:"/0.109.7/setup-and-usages/sync-schema",target:"_blank"},"Sync Schema")," for details."),(0,n.kt)("h3",{id:"audit"},"Audit"),(0,n.kt)("p",null,"We are keeping all the user operation logs under one place. See ",(0,n.kt)("a",{href:"/0.109.7/setup-and-usages/audit",target:"_blank"},"Audit")," for details."),(0,n.kt)("h2",{id:"why-are-we-building-this"},"Why are we building this?"),(0,n.kt)("p",null,"Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by a Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings has meant horrible access controls, vendor lockin, data lockin, abrupt price changes & most importantly a glass ceiling on what's possible in future."),(0,n.kt)("h2",{id:"our-mission"},"Our Mission"),(0,n.kt)("p",null,"Our mission is to provide the most powerful no-code interface for databases which is open source to every single internet business in the world. This would not only democratise access to a powerful computing tool but also bring forth a billion+ people who will have radical tinkering-and-building abilities on internet. "),(0,n.kt)("h2",{id:"how-can-i-contribute-to-nocodbs-development-"},"How can I contribute to NocoDB's development ?"),(0,n.kt)("p",null,"Please refer to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/blob/develop/.github/CONTRIBUTING.md"},"here")," for the contribution guidelines."),(0,n.kt)("img",{src:"https://static.scarf.sh/a.png?x-pxid=c12a77cc-855e-4602-8a0f-614b2d0da56a",style:{margin:"0px"}}),(0,n.kt)("h2",{id:"where-can-i-join-the-nocodb-community"},"Where can I join the NocoDB community?"),(0,n.kt)("p",null,"Follow us for daily updates, content, and other activities with our community:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.youtube.com/@nocodb"},"Youtube")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://twitter.com/nocodb"},"Twitter")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"http://discord.nocodb.com/"},"Discord")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb"},"GitHub")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://community.nocodb.com/"},"Community Forums")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.linkedin.com/company/nocodb"},"LinkedIn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/NocoDB/"},"Reddit"))))}p.isMDXComponent=!0},36562:(e,t,o)=>{o.d(t,{Z:()=>a});const a=o.p+"assets/images/banner-0a7a485798fc16881259280a1227725d.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/1fb5f022.2932790c.js b/packages/noco-docs/dist/assets/js/1fb5f022.2932790c.js new file mode 100644 index 0000000000..b69141d9a5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/1fb5f022.2932790c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9020],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>v});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var i=r.createContext({}),l=function(e){var t=r.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},u=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,i=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(a),m=o,v=d["".concat(i,".").concat(m)]||d[m]||p[m]||n;return a?r.createElement(v,c(c({ref:t},u),{},{components:a})):r.createElement(v,c({ref:t},u))}));function v(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,c=new Array(n);c[0]=m;var s={};for(var i in t)hasOwnProperty.call(t,i)&&(s[i]=t[i]);s.originalType=e,s[d]="string"==typeof e?e:o,c[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>n,metadata:()=>s,toc:()=>l});var r=a(87462),o=(a(67294),a(3905));const n={title:"Data sources overview",description:"NocoDB Data-Source sync, access control & re-config",tags:["Data Sources","Overview"],keywords:["Data Sources overview","Data Sources sync","Data Sources access control","Data Sources re-config"]},c=void 0,s={unversionedId:"data-sources/data-source-overview",id:"data-sources/data-source-overview",title:"Data sources overview",description:"NocoDB Data-Source sync, access control & re-config",source:"@site/docs/100.data-sources/010.data-source-overview.md",sourceDirName:"100.data-sources",slug:"/data-sources/data-source-overview",permalink:"/data-sources/data-source-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/100.data-sources/010.data-source-overview.md",tags:[{label:"Data Sources",permalink:"/tags/data-sources"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Data sources overview",description:"NocoDB Data-Source sync, access control & re-config",tags:["Data Sources","Overview"],keywords:["Data Sources overview","Data Sources sync","Data Sources access control","Data Sources re-config"]},sidebar:"tutorialSidebar",previous:{title:"Actions on view",permalink:"/views/actions-on-view"},next:{title:"Connect to a Data source",permalink:"/data-sources/connect-to-data-source"}},i={},l=[{value:"Overview",id:"overview",level:2},{value:"Accessing Data Sources",id:"accessing-data-sources",level:2}],u={toc:l},d="wrapper";function p(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"NocoDB allows you to connect to external data sources and get a unified spreadsheet view of your data. Activities related to external data sources can be managed from ",(0,o.kt)("inlineCode",{parentName:"p"},"Data Sources")," tab in ",(0,o.kt)("inlineCode",{parentName:"p"},"Base dashboard"),"."),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Data Sources")," tab includes following functionalities"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Connect/manage external data source"),(0,o.kt)("li",{parentName:"ol"},"UI Access Control"),(0,o.kt)("li",{parentName:"ol"},"Relations"),(0,o.kt)("li",{parentName:"ol"},"Audit logs")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Currently only one external data source can be added per project.")),(0,o.kt)("h2",{id:"accessing-data-sources"},"Accessing ",(0,o.kt)("inlineCode",{parentName:"h2"},"Data Sources")),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"data source",src:a(46515).Z,width:"2876",height:"928"})),(0,o.kt)("p",null,"Learn more about working with Data sources in the following sections:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/connect-to-data-source"},"Connect to a Data source")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/sync-with-data-source"},"Sync changes externally made to data source")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#edit-external-database-configuration-parameters"},"Edit external database configuration parameters")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#remove-external-data-source"},"Remove Data source")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#data-source-visibility"},"Hide Data source")," ")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#relations"},"Relations within a data source")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#audit-logs"},"Audit logs")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/data-sources/actions-on-data-sources#ui-access-control"},"UI Access Control"))))}p.isMDXComponent=!0},46515:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/data-source-a136125c9bc5031ada9df69ba6484d5a.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/20e10381.8bd204da.js b/packages/noco-docs/dist/assets/js/20e10381.8bd204da.js new file mode 100644 index 0000000000..3559d67385 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/20e10381.8bd204da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[405],{3905:(e,t,o)=>{o.d(t,{Zo:()=>p,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var c=n.createContext({}),s=function(e){var t=n.useContext(c),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(o),h=r,m=d["".concat(c,".").concat(h)]||d[h]||u[h]||a;return o?n.createElement(m,i(i({ref:t},p),{},{components:o})):n.createElement(m,i({ref:t},p))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=o(87462),r=(o(67294),o(3905));const a={title:"FAQs",description:"General FAQs"},i=void 0,l={unversionedId:"FAQs",id:"FAQs",title:"FAQs",description:"General FAQs",source:"@site/docs/990.FAQs.md",sourceDirName:".",slug:"/FAQs",permalink:"/FAQs",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/990.FAQs.md",tags:[],version:"current",sidebarPosition:990,frontMatter:{title:"FAQs",description:"General FAQs"},sidebar:"tutorialSidebar",previous:{title:"Writing docs",permalink:"/engineering/writing-docs"}},c={},s=[{value:"How to upgrade NocoDB ?",id:"how-to-upgrade-nocodb-",level:2},{value:"How to export CSV from the grid view ?",id:"how-to-export-csv-from-the-grid-view-",level:2},{value:"How to share the project with read only access ?",id:"how-to-share-the-project-with-read-only-access-",level:2},{value:"How to check my Project info ?",id:"how-to-check-my-project-info-",level:2},{value:"What is available in free version ?",id:"what-is-available-in-free-version-",level:2},{value:"What is the difference between Auth Token and API Token ?",id:"what-is-the-difference-between-auth-token-and-api-token-",level:2},{value:"Do we plan to have an Enterprise Edition?",id:"do-we-plan-to-have-an-enterprise-edition",level:2},{value:"How do we decide if a feature is Enterprise or not ?",id:"how-do-we-decide-if-a-feature-is-enterprise-or-not-",level:2},{value:"What are the official socials for NocoDB?",id:"what-are-the-official-socials-for-nocodb",level:2},{value:"Is NocoDB available on the cloud?",id:"is-nocodb-available-on-the-cloud",level:2}],p={toc:s},d="wrapper";function u(e){let{components:t,...a}=e;return(0,r.kt)(d,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"how-to-upgrade-nocodb-"},"How to upgrade NocoDB ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Please see ",(0,r.kt)("a",{parentName:"li",href:"https://docs.nocodb.com/getting-started/upgrading"},"here")," ")),(0,r.kt)("h2",{id:"how-to-export-csv-from-the-grid-view-"},"How to export CSV from the grid view ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Available since ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/tag/0.81.1"},"0.81.1"))),(0,r.kt)("h2",{id:"how-to-share-the-project-with-read-only-access-"},"How to share the project with read only access ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Either you can invite by email with 'viewer' access control"),(0,r.kt)("li",{parentName:"ul"},"Share the base with publicly accessible link. Available since ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/tag/0.82.0"},"0.82.0")," ")),(0,r.kt)("h2",{id:"how-to-check-my-project-info-"},"How to check my Project info ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You can open ",(0,r.kt)("inlineCode",{parentName:"li"},"Project context menu")," and click ",(0,r.kt)("inlineCode",{parentName:"li"},"Copy Project Info"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"image",src:o(43523).Z,width:"824",height:"511"})),(0,r.kt)("p",null,"You should see the similar result as below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Node: **v18.16.4**\nArch: **arm64**\nPlatform: **linux**\nDocker: **true**\nRootDB: **sqlite3**\nPackageVersion: **0.111.0**\n")),(0,r.kt)("h2",{id:"what-is-available-in-free-version-"},"What is available in free version ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/nocodb/projects/13"},"Detailed comparison of NocoDB's generous CE compared to others is here"),"."),(0,r.kt)("li",{parentName:"ul"},"NocoDB has just one version that is free & open source."),(0,r.kt)("li",{parentName:"ul"},"In it you will notice advanced features are all available for free.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"ACL"),(0,r.kt)("li",{parentName:"ul"},"Collaboration"),(0,r.kt)("li",{parentName:"ul"},"Advanced Views : Form View, Gallery View & Kanban View"),(0,r.kt)("li",{parentName:"ul"},"Share View"),(0,r.kt)("li",{parentName:"ul"},"Embed View "),(0,r.kt)("li",{parentName:"ul"},"Password protected View"),(0,r.kt)("li",{parentName:"ul"},"Automations"),(0,r.kt)("li",{parentName:"ul"},"API Token Support"))),(0,r.kt)("li",{parentName:"ul"},"And we would never move these features from free to an enterprise version of NocoDB."),(0,r.kt)("li",{parentName:"ul"},"There is no limitations to number of projects, records or fields either.")),(0,r.kt)("h2",{id:"what-is-the-difference-between-auth-token-and-api-token-"},"What is the difference between Auth Token and API Token ?"),(0,r.kt)("p",null,"Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable ",(0,r.kt)("inlineCode",{parentName:"p"},"NC_JWT_EXPIRES_IN"),". If you are passing Auth Token, make sure that the header is called ",(0,r.kt)("inlineCode",{parentName:"p"},"xc-auth"),"."),(0,r.kt)("p",null,"API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called ",(0,r.kt)("inlineCode",{parentName:"p"},"xc-token"),"."),(0,r.kt)("h2",{id:"do-we-plan-to-have-an-enterprise-edition"},"Do we plan to have an Enterprise Edition?"),(0,r.kt)("p",null,"For features that make sense for enterprises like below - yes "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"SSO, SLA, Organisation wide reports and analytics, "),(0,r.kt)("li",{parentName:"ul"},"Advanced Audit or ACL, "),(0,r.kt)("li",{parentName:"ul"},"Bespoke implementations & integrations,"),(0,r.kt)("li",{parentName:"ul"},"A hosted solution.\n")),(0,r.kt)("p",null,"And increasing number of our customers are requesting it. "),(0,r.kt)("h2",{id:"how-do-we-decide-if-a-feature-is-enterprise-or-not-"},"How do we decide if a feature is Enterprise or not ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Depends on the effort and whether the intended users are enterprises.")),(0,r.kt)("h2",{id:"what-are-the-official-socials-for-nocodb"},"What are the official socials for NocoDB?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Youtube: ",(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/@nocodb"},"https://www.youtube.com/@nocodb")),(0,r.kt)("li",{parentName:"ul"},"Twitter: ",(0,r.kt)("a",{parentName:"li",href:"https://twitter.com/nocodb"},"https://twitter.com/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Discord: ",(0,r.kt)("a",{parentName:"li",href:"http://discord.nocodb.com/"},"http://discord.nocodb.com/")),(0,r.kt)("li",{parentName:"ul"},"GitHub: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb"},"https://github.com/nocodb/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Community Forums: ",(0,r.kt)("a",{parentName:"li",href:"https://community.nocodb.com/"},"https://community.nocodb.com/")),(0,r.kt)("li",{parentName:"ul"},"LinkedIn: ",(0,r.kt)("a",{parentName:"li",href:"https://www.linkedin.com/company/nocodb"},"https://www.linkedin.com/company/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Reddit: ",(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/NocoDB/"},"https://www.reddit.com/r/NocoDB/"))),(0,r.kt)("h2",{id:"is-nocodb-available-on-the-cloud"},"Is NocoDB available on the cloud?"),(0,r.kt)("p",null,"Soon! NocoDB is currently developing cloud infrastructure.\nTo join the upcoming FREE private beta program, ",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/forms/d/e/1FAIpQLSfKLe8Rcrq0uo2_jM5W1kbVBbzDiQ3IvlP8Iov61FTekVAvzA/viewform"},"fill out this form here")," and be the first to try it!"))}u.isMDXComponent=!0},43523:(e,t,o)=>{o.d(t,{Z:()=>n});const n=o.p+"assets/images/copy-proj-info-f059b5a1330cd599d89ba88d6714883c.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2226a1e9.03795cf8.js b/packages/noco-docs/dist/assets/js/2226a1e9.03795cf8.js new file mode 100644 index 0000000000..d0d5031a13 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2226a1e9.03795cf8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9552],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var o=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var u=o.createContext({}),c=function(e){var t=o.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},s=function(e){var t=c(e.components);return o.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,u=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=c(n),m=l,k=p["".concat(u,".").concat(m)]||p[m]||d[m]||a;return n?o.createElement(k,r(r({ref:t},s),{},{components:n})):o.createElement(k,r({ref:t},s))}));function k(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,r=new Array(a);r[0]=m;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i[p]="string"==typeof e?e:l,r[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>r,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var o=n(87462),l=(n(67294),n(3905));const a={title:"Lookup",description:"Understanding Lookup Column!"},r=void 0,i={unversionedId:"setup-and-usages/lookup",id:"version-0.109.7/setup-and-usages/lookup",title:"Lookup",description:"Understanding Lookup Column!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/070.lookup.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/lookup",permalink:"/0.109.7/setup-and-usages/lookup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/070.lookup.md",tags:[],version:"0.109.7",sidebarPosition:70,frontMatter:{title:"Lookup",description:"Understanding Lookup Column!"},sidebar:"tutorialSidebar",previous:{title:"Link To Another Record",permalink:"/0.109.7/setup-and-usages/link-to-another-record"},next:{title:"Rollup",permalink:"/0.109.7/setup-and-usages/rollup"}},u={},c=[{value:"Lookup",id:"lookup",level:2},{value:"Example organization structure",id:"example-organization-structure",level:3},{value:"Configuring a lookup column",id:"configuring-a-lookup-column",level:3},{value:"1. Add new column : Click on '+' icon to the left of column headers in Employee table",id:"1-add-new-column--click-on--icon-to-the-left-of-column-headers-in-employee-table",level:4},{value:"2. Feed column name",id:"2-feed-column-name",level:4},{value:"3. Select column type as 'Lookup'",id:"3-select-column-type-as-lookup",level:4},{value:"4. Choose child table",id:"4-choose-child-table",level:4},{value:"5. Select child column",id:"5-select-child-column",level:4},{value:"6. Click on 'Save'",id:"6-click-on-save",level:4},{value:"Additional notes",id:"additional-notes",level:2}],s={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,l.kt)(p,(0,o.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"lookup"},"Lookup"),(0,l.kt)("h3",{id:"example-organization-structure"},"Example organization structure"),(0,l.kt)("p",null,"Consider an organization with"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"5 departments (company departments), each department has a team name & associated team code. Each ",(0,l.kt)("inlineCode",{parentName:"li"},"Team")," ",(0,l.kt)("strong",{parentName:"li"},"has many")," ",(0,l.kt)("inlineCode",{parentName:"li"},"Employees")," - relationship has been defined using ",(0,l.kt)("inlineCode",{parentName:"li"},"LinkToAnotherRecord")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"Links"),"column"),(0,l.kt)("li",{parentName:"ul"},"5 employees working at different departments")),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189295738-a4197818-f7d7-4769-acad-13b6d05afe7e.png",alt:"Screenshot 2022-09-09 at 12 57 32 PM"})),(0,l.kt)("p",null,"Now, let's explore procedure to retrieve team-code information in Employee table using ",(0,l.kt)("strong",{parentName:"p"},"LOOKUP")," columns"),(0,l.kt)("h3",{id:"configuring-a-lookup-column"},"Configuring a lookup column"),(0,l.kt)("h4",{id:"1-add-new-column--click-on--icon-to-the-left-of-column-headers-in-employee-table"},"1. Add new column : Click on '+' icon to the left of column headers in Employee table"),(0,l.kt)("h4",{id:"2-feed-column-name"},"2. Feed column name"),(0,l.kt)("h4",{id:"3-select-column-type-as-lookup"},"3. Select column type as 'Lookup'"),(0,l.kt)("h4",{id:"4-choose-child-table"},"4. Choose child table"),(0,l.kt)("h4",{id:"5-select-child-column"},"5. Select child column"),(0,l.kt)("h4",{id:"6-click-on-save"},"6. Click on 'Save'"),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189291720-642a6a96-0b3d-4eaa-886a-20d33a967644.png",alt:"Screenshot 2022-09-09 at 12 21 13 PM"})),(0,l.kt)("p",null,"Required information is now populated in the newly created column"),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189291679-09503e32-9146-41fa-b28c-d900f2dc35a4.png",alt:"Screenshot 2022-09-09 at 12 26 06 PM"})),(0,l.kt)("h2",{id:"additional-notes"},"Additional notes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Nested 'Lookup' supported: a Lookup field can have its child column datatype as Lookup (or Rollup).")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/224f2b0f.9484385a.js b/packages/noco-docs/dist/assets/js/224f2b0f.9484385a.js new file mode 100644 index 0000000000..0a4a909676 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/224f2b0f.9484385a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2562],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=a.createContext({}),p=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(o.Provider,{value:t},e.children)},m="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},N=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,o=e.parentName,u=d(e,["components","mdxType","originalType","parentName"]),m=p(n),N=r,k=m["".concat(o,".").concat(N)]||m[N]||s[N]||l;return n?a.createElement(k,i(i({ref:t},u),{},{components:n})):a.createElement(k,i({ref:t},u))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,i=new Array(l);i[0]=N;var d={};for(var o in t)hasOwnProperty.call(t,o)&&(d[o]=t[o]);d.originalType=e,d[m]="string"==typeof e?e:r,i[1]=d;for(var p=2;p{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const l={title:"Numeric functions",description:"This article explains various numeric functions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Numeric functions"]},i=void 0,d={unversionedId:"fields/field-types/formula/numeric-functions",id:"fields/field-types/formula/numeric-functions",title:"Numeric functions",description:"This article explains various numeric functions that can be used in formula fields.",source:"@site/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/numeric-functions",permalink:"/fields/field-types/formula/numeric-functions",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"}],version:"current",sidebarPosition:20,frontMatter:{title:"Numeric functions",description:"This article explains various numeric functions that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Numeric functions"]},sidebar:"tutorialSidebar",previous:{title:"Numeric and Logical Operators",permalink:"/fields/field-types/formula/operators"},next:{title:"String functions",permalink:"/fields/field-types/formula/string-functions"}},o={},p=[{value:"Numeric functions",id:"numeric-functions",level:3},{value:"Related Articles",id:"related-articles",level:2}],u={toc:p},m="wrapper";function s(e){let{components:t,...n}=e;return(0,r.kt)(m,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h3",{id:"numeric-functions"},"Numeric functions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ABS")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ABS(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ABS({field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Absolute value of the input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ADD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ADD(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ADD({field1}, {field2})")),(0,r.kt)("td",{parentName:"tr",align:null},"Sum of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"AVG")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AVG(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AVG({field1}, {field2})")),(0,r.kt)("td",{parentName:"tr",align:null},"Average of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"CEILING")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CEILING(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CEILING({field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Rounded next largest integer value of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"EXP")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"EXP(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"EXP({field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Exponential value of input parameter (",(0,r.kt)("inlineCode",{parentName:"td"},"e^x"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"FLOOR")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"FLOOR(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"FLOOR({field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Rounded largest integer less than or equal to input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"INT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"INT(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"INT({field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Integer value of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"LOG")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOG([base], value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOG(10, {field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Logarithm of input parameter to the base (default = e) specified")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MAX")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MAX(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MAX({field1}, {Field2}, {Field3})")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum value amongst input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MIN")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MIN(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MIN({Field1}, {Field2}, {Field3})")),(0,r.kt)("td",{parentName:"tr",align:null},"Minimum value amongst input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MOD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MOD(value1, value2)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MOD({Field}, 2)")),(0,r.kt)("td",{parentName:"tr",align:null},"Remainder after integer division of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"POWER")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"POWER(base, exponent)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"POWER({Field}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"base")," to the ",(0,r.kt)("inlineCode",{parentName:"td"},"exponent")," power, as in ",(0,r.kt)("inlineCode",{parentName:"td"},"base ^ exponent"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ROUND")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ROUND(value, precision)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ROUND({Field}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},"Round input ",(0,r.kt)("inlineCode",{parentName:"td"},"value")," to decimal place specified by ",(0,r.kt)("inlineCode",{parentName:"td"},"precision")," (Nearest integer if ",(0,r.kt)("inlineCode",{parentName:"td"},"precision")," not provided)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SQRT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SQRT(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SQRT({Field})")),(0,r.kt)("td",{parentName:"tr",align:null},"Square root of the input parameter")))),(0,r.kt)("h2",{id:"related-articles"},"Related Articles"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/operators"},"Numeric and Logical Operators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/string-functions"},"String Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/date-functions"},"Date Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/conditional-expressions"},"Conditional Expressions"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/22580739.f7eb21e2.js b/packages/noco-docs/dist/assets/js/22580739.f7eb21e2.js new file mode 100644 index 0000000000..f811b04dae --- /dev/null +++ b/packages/noco-docs/dist/assets/js/22580739.f7eb21e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1796],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function o(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var d=r.createContext({}),s=function(e){var t=r.useContext(d),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},p=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,n=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=s(i),h=a,m=c["".concat(d,".").concat(h)]||c[h]||f[h]||n;return i?r.createElement(m,o(o({ref:t},p),{},{components:i})):r.createElement(m,o({ref:t},p))}));function m(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=i.length,o=new Array(n);o[0]=h;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>f,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var r=i(87462),a=(i(67294),i(3905));const n={title:"Hide & reorder fields",description:"Learn how to hide and reorder fields in NocoDB.",tags:["Table operations","Reorder","Show/hide","Cover image","Gallery view","Kanban view","Grid view"],keywords:["hide field","show field","reorder field","cover image"]},o=void 0,l={unversionedId:"table-operations/field-operations",id:"table-operations/field-operations",title:"Hide & reorder fields",description:"Learn how to hide and reorder fields in NocoDB.",source:"@site/docs/060.table-operations/020.field-operations.md",sourceDirName:"060.table-operations",slug:"/table-operations/field-operations",permalink:"/table-operations/field-operations",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/020.field-operations.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Reorder",permalink:"/tags/reorder"},{label:"Show/hide",permalink:"/tags/show-hide"},{label:"Cover image",permalink:"/tags/cover-image"},{label:"Gallery view",permalink:"/tags/gallery-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:20,frontMatter:{title:"Hide & reorder fields",description:"Learn how to hide and reorder fields in NocoDB.",tags:["Table operations","Reorder","Show/hide","Cover image","Gallery view","Kanban view","Grid view"],keywords:["hide field","show field","reorder field","cover image"]},sidebar:"tutorialSidebar",previous:{title:"Table operations overview",permalink:"/table-operations/overview"},next:{title:"Filtering records",permalink:"/table-operations/filter"}},d={},s=[{value:"Rearranging Fields",id:"rearranging-fields",level:3},{value:"Show/Hide Fields",id:"showhide-fields",level:3},{value:"Change cover field (Gallery/Kanban View)",id:"change-cover-field-gallerykanban-view",level:3},{value:"Related topics",id:"related-topics",level:3}],p={toc:s},c="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Utilize the ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields")," button in the toolbar to manage the visibility of fields within the system. By default, all system-related fields are concealed, but you have the option to enable them by selecting ",(0,a.kt)("inlineCode",{parentName:"p"},"Show system fields"),"."),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"For Gallery View & Kanban View, the ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields")," menu is available on the toolbar as ",(0,a.kt)("inlineCode",{parentName:"p"},"Edit Cards"),".")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Show system fields",src:i(86404).Z,width:"2876",height:"1032"})),(0,a.kt)("h3",{id:"rearranging-fields"},"Rearranging Fields"),(0,a.kt)("p",null,"You have the flexibility to rearrange field positions. Access the ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields")," menu and reorder fields effortlessly by dragging and dropping the associated field using the provided ",(0,a.kt)("inlineCode",{parentName:"p"},"drag icon"),"."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Reorder Fields",src:i(74432).Z,width:"2876",height:"1032"})),(0,a.kt)("h3",{id:"showhide-fields"},"Show/Hide Fields"),(0,a.kt)("p",null,"For showing or hiding fields, navigate to the ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields")," menu and simply click the toggle button associated with the respective field to hide or un-hide it."),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Consider creating different grid views with distinct sets of fields displayed in each view for enhanced customization.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Show/Hide Fields",src:i(42778).Z,width:"2876",height:"1032"})),(0,a.kt)("h3",{id:"change-cover-field-gallerykanban-view"},"Change cover field (Gallery/Kanban View)"),(0,a.kt)("p",null,"For Gallery View & Kanban View, you can change the cover field by clicking on the ",(0,a.kt)("inlineCode",{parentName:"p"},"Change cover field")," button in the ",(0,a.kt)("inlineCode",{parentName:"p"},"Edit Cards")," menu. You can select any field of type ",(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," as the cover field."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Change cover field",src:i(21038).Z,width:"2874",height:"1414"})),(0,a.kt)("h3",{id:"related-topics"},"Related topics"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"row-height"},"Row height")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"download"},"Download"))))}f.isMDXComponent=!0},21038:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/change-cover-image-ab1e220f3d9f8ccba648546c2f0e9b22.png"},42778:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/fields-hide-5d148bab6699773742b9bfed3c0fce87.png"},74432:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/fields-reorder-f25c546ea11fd8df6d4d0eafc1d4e5ae.png"},86404:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/fields-show-system-fields-2eb0f4e0a0c16c6b46c38f243709e581.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/22aab9a3.c0e16b59.js b/packages/noco-docs/dist/assets/js/22aab9a3.c0e16b59.js new file mode 100644 index 0000000000..71e49ce710 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/22aab9a3.c0e16b59.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6907],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var l=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function r(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var o=l.createContext({}),d=function(e){var t=l.useContext(o),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},p=function(e){var t=d(e.components);return l.createElement(o.Provider,{value:t},e.children)},f="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,o=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),f=d(i),u=n,m=f["".concat(o,".").concat(u)]||f[u]||c[u]||a;return i?l.createElement(m,r(r({ref:t},p),{},{components:i})):l.createElement(m,r({ref:t},p))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,r=new Array(a);r[0]=u;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[f]="string"==typeof e?e:n,r[1]=s;for(var d=2;d{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var l=i(87462),n=(i(67294),i(3905));const a={title:"Single line text",description:"This article explains how to create & work with a Single line text field.",tags:["Fields","Field types","Text based types","Single line text"],keywords:["Fields","Field types","Text based types","Single line text","Create single line text field"]},r=void 0,s={unversionedId:"fields/field-types/text-based/single-line-text",id:"fields/field-types/text-based/single-line-text",title:"Single line text",description:"This article explains how to create & work with a Single line text field.",source:"@site/docs/070.fields/040.field-types/010.text-based/010.single-line-text.md",sourceDirName:"070.fields/040.field-types/010.text-based",slug:"/fields/field-types/text-based/single-line-text",permalink:"/fields/field-types/text-based/single-line-text",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/010.text-based/010.single-line-text.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Text based types",permalink:"/tags/text-based-types"},{label:"Single line text",permalink:"/tags/single-line-text"}],version:"current",sidebarPosition:10,frontMatter:{title:"Single line text",description:"This article explains how to create & work with a Single line text field.",tags:["Fields","Field types","Text based types","Single line text"],keywords:["Fields","Field types","Text based types","Single line text","Create single line text field"]},sidebar:"tutorialSidebar",previous:{title:"Display value",permalink:"/fields/display-value"},next:{title:"Long text",permalink:"/fields/field-types/text-based/long-text"}},o={},d=[{value:"Create a single line text field",id:"create-a-single-line-text-field",level:2},{value:"Similar text based fields",id:"similar-text-based-fields",level:2}],p={toc:d},f="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(f,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Single line text")," field is a simple text based field. It can hold any text value. It is generally used for storing short text values like name, email, phone number, etc. For storing text values with multiple lines, use ",(0,n.kt)("a",{parentName:"p",href:"/fields/field-types/text-based/long-text"},"Long text")," field. "),(0,n.kt)("h2",{id:"create-a-single-line-text-field"},"Create a single line text field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Single line text")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:i(45859).Z,width:"2878",height:"1226"})),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"Specify default value without quotes.")),(0,n.kt)("h2",{id:"similar-text-based-fields"},"Similar text based fields"),(0,n.kt)("p",null,"Following are the other text based fields available in NocoDB, custom-built for specific use cases."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/long-text"},"Long text")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/url"},"URL")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/email"},"Email")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/phonenumber"},"Phone"))))}c.isMDXComponent=!0},45859:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/singlelinetext-b709b2cd21a07ff6f36b149d47091ca0.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/23371042.6595ff54.js b/packages/noco-docs/dist/assets/js/23371042.6595ff54.js new file mode 100644 index 0000000000..083c7924ad --- /dev/null +++ b/packages/noco-docs/dist/assets/js/23371042.6595ff54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5375],{67337:o=>{o.exports=JSON.parse('{"label":"Members","permalink":"/tags/members","allTagsPath":"/tags","count":4,"items":[{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/collaboration/base-collaboration"},{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/collaboration/workspace-collaboration"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2556c3eb.608541f9.js b/packages/noco-docs/dist/assets/js/2556c3eb.608541f9.js new file mode 100644 index 0000000000..d1c6bd133e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2556c3eb.608541f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8],{91033:a=>{a.exports=JSON.parse('{"label":"PG","permalink":"/tags/pg","allTagsPath":"/tags","count":2,"items":[{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","permalink":"/data-sources/connect-to-data-source"},{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","permalink":"/data-sources/sync-with-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/25ad7bcb.4e828725.js b/packages/noco-docs/dist/assets/js/25ad7bcb.4e828725.js new file mode 100644 index 0000000000..2a9aa75707 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/25ad7bcb.4e828725.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8789],{3905:(e,t,o)=>{o.d(t,{Zo:()=>b,kt:()=>d});var r=o(67294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},b=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var o=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,b=l(e,["components","mdxType","originalType","parentName"]),m=c(o),u=a,d=m["".concat(s,".").concat(u)]||m[u]||p[u]||n;return o?r.createElement(d,i(i({ref:t},b),{},{components:o})):r.createElement(d,i({ref:t},b))}));function d(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=o.length,i=new Array(n);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var c=2;c{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>n,metadata:()=>l,toc:()=>c});var r=o(87462),a=(o(67294),o(3905));const n={title:"Base collaboration",description:"Invite team members to work on a base",tags:["Collaboration","Bases","Members","Invite","Roles"],keywords:["NocoDB base","base collaboration","base context menu","base owner","base settings"]},i=void 0,l={unversionedId:"collaboration/base-collaboration",id:"collaboration/base-collaboration",title:"Base collaboration",description:"Invite team members to work on a base",source:"@site/docs/120.collaboration/020.base-collaboration.md",sourceDirName:"120.collaboration",slug:"/collaboration/base-collaboration",permalink:"/collaboration/base-collaboration",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/020.base-collaboration.md",tags:[{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Bases",permalink:"/tags/bases"},{label:"Members",permalink:"/tags/members"},{label:"Invite",permalink:"/tags/invite"},{label:"Roles",permalink:"/tags/roles"}],version:"current",sidebarPosition:20,frontMatter:{title:"Base collaboration",description:"Invite team members to work on a base",tags:["Collaboration","Bases","Members","Invite","Roles"],keywords:["NocoDB base","base collaboration","base context menu","base owner","base settings"]},sidebar:"tutorialSidebar",previous:{title:"Workspace collaboration",permalink:"/collaboration/workspace-collaboration"},next:{title:"Share base",permalink:"/collaboration/share-base"}},s={},c=[{value:"Inviting members to your base",id:"inviting-members-to-your-base",level:2},{value:"Removing members from your base",id:"removing-members-from-your-base",level:2}],b={toc:c},m="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},b,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"inviting-members-to-your-base"},"Inviting members to your base"),(0,a.kt)("p",null,"A member added to a workspace will carry his assigned role specific permissions to all the base with in workspace. To override member permissions to your base, please follow steps outlined below:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Go to the left sidebar and select ",(0,a.kt)("inlineCode",{parentName:"li"},"Base name")," to access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Base Dashboard.")),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Use the dropdown menu to specify the access permissions for the member you wish to collaborate."),(0,a.kt)("li",{parentName:"ol"},"Finalize the process by assigning the desired role to the user.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:o(54861).Z,width:"2878",height:"1408"})),(0,a.kt)("p",null,"More details about roles & permissions can be found ",(0,a.kt)("a",{parentName:"p",href:"/roles-and-permissions/roles-permissions-overview"},"here"),"."),(0,a.kt)("h2",{id:"removing-members-from-your-base"},"Removing members from your base"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Go to the left sidebar and select ",(0,a.kt)("inlineCode",{parentName:"li"},"Base name")," to access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Base Dashboard.")),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Use the dropdown menu to specify the access permissions for the member you wish to collaborate."),(0,a.kt)("li",{parentName:"ol"},"Assign the ",(0,a.kt)("inlineCode",{parentName:"li"},"No Access")," role to the user.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:o(54861).Z,width:"2878",height:"1408"})))}p.isMDXComponent=!0},54861:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/base-collaboration-7c992951b09e76dec15cd8d15c04fece.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2664.2f6568eb.js b/packages/noco-docs/dist/assets/js/2664.2f6568eb.js new file mode 100644 index 0000000000..9553a140d2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2664.2f6568eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2664],{22664:(c,s,o)=>{o.r(s)}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/275c23cd.760a8cbe.js b/packages/noco-docs/dist/assets/js/275c23cd.760a8cbe.js new file mode 100644 index 0000000000..9d7776ef86 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/275c23cd.760a8cbe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2289],{55513:a=>{a.exports=JSON.parse('{"label":"Remove","permalink":"/tags/remove","allTagsPath":"/tags","count":1,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/276e2b0f.605c6d82.js b/packages/noco-docs/dist/assets/js/276e2b0f.605c6d82.js new file mode 100644 index 0000000000..6c4eb4ebd0 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/276e2b0f.605c6d82.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2439],{41962:o=>{o.exports=JSON.parse('{"label":"Edit","permalink":"/tags/edit","allTagsPath":"/tags","count":2,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"},{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","permalink":"/records/actions-on-record"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/278121a5.c6034b57.js b/packages/noco-docs/dist/assets/js/278121a5.c6034b57.js new file mode 100644 index 0000000000..0c91be52b1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/278121a5.c6034b57.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2556],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,d=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=l(r),u=o,h=s["".concat(c,".").concat(u)]||s[u]||m[u]||d;return r?n.createElement(h,a(a({ref:t},p),{},{components:r})):n.createElement(h,a({ref:t},p))}));function h(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var d=r.length,a=new Array(d);a[0]=u;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[s]="string"==typeof e?e:o,a[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>d,metadata:()=>i,toc:()=>l});var n=r(87462),o=(r(67294),r(3905));const d={title:"Expanded record",tags:["Records","Expanded record","Audit","Comments"],description:"Learn how to expand a record & work with it in NocoDB.",keywords:["NocoDB expanded form","expanded form","expanded record","expanded record view"]},a=void 0,i={unversionedId:"records/expand-record",id:"records/expand-record",title:"Expanded record",description:"Learn how to expand a record & work with it in NocoDB.",source:"@site/docs/080.records/030.expand-record.md",sourceDirName:"080.records",slug:"/records/expand-record",permalink:"/records/expand-record",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/080.records/030.expand-record.md",tags:[{label:"Records",permalink:"/tags/records"},{label:"Expanded record",permalink:"/tags/expanded-record"},{label:"Audit",permalink:"/tags/audit"},{label:"Comments",permalink:"/tags/comments"}],version:"current",sidebarPosition:30,frontMatter:{title:"Expanded record",tags:["Records","Expanded record","Audit","Comments"],description:"Learn how to expand a record & work with it in NocoDB.",keywords:["NocoDB expanded form","expanded form","expanded record","expanded record view"]},sidebar:"tutorialSidebar",previous:{title:"Create record",permalink:"/records/create-record"},next:{title:"Actions on record",permalink:"/records/actions-on-record"}},c={},l=[{value:"Overview",id:"overview",level:2},{value:"Expanding a Record",id:"expanding-a-record",level:2},{value:"Edit record",id:"edit-record",level:3},{value:"Record Audit",id:"record-audit",level:2},{value:"Record Comment",id:"record-comment",level:2},{value:"Add Comment",id:"add-comment",level:3},{value:"Edit Comment",id:"edit-comment",level:3},{value:"Record Actions",id:"record-actions",level:2},{value:"Copy Record URL",id:"copy-record-url",level:3},{value:"Duplicate record",id:"duplicate-record",level:3},{value:"Delete record",id:"delete-record",level:3}],p={toc:l},s="wrapper";function m(e){let{components:t,...d}=e;return(0,o.kt)(s,(0,n.Z)({},p,d,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Expanded record")," allows you to edit a record data using a form layout. Apart from record information, it also consists of the activity feed such as user comments or record revision history (audit). "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expanded record",src:r(13319).Z,width:"2878",height:"1800"})),(0,o.kt)("h2",{id:"expanding-a-record"},"Expanding a Record"),(0,o.kt)("p",null,"To expand a record in a grid view, click on ",(0,o.kt)("inlineCode",{parentName:"p"},"expand")," icon that appears on the first column (index column) on hover over a record. "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record icon",src:r(5931).Z,width:"2878",height:"1442"})),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Shortcut : Use space bar on any cell to expand associated record.")),(0,o.kt)("h3",{id:"edit-record"},"Edit record"),(0,o.kt)("p",null,"Expanded form displays all the fields of a record enabled for display in a form layout. "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"You can edit the record data by clicking on the field and entering the value."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"Show hidden fields"),": Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Show hidden fields")," button to display all the fields of a record."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save")," button to save the changes. Close the expanded form by clicking on ",(0,o.kt)("inlineCode",{parentName:"li"},"X")," button in the top right corner of the form to discard the changes."),(0,o.kt)("li",{parentName:"ol"},"Navigate to next/previous record using ",(0,o.kt)("inlineCode",{parentName:"li"},"Next"),"/",(0,o.kt)("inlineCode",{parentName:"li"},"Previous")," button in the top left corner of the form.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Any changes made to the links field (link/unlink) will be saved automatically.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"edit record",src:r(50016).Z,width:"2876",height:"1800"})),(0,o.kt)("h2",{id:"record-audit"},"Record Audit"),(0,o.kt)("p",null,"In an expanded form, "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Audit")," tab "),(0,o.kt)("li",{parentName:"ol"},"A list of all the changes made to the record will be displayed")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record activity feed",src:r(94773).Z,width:"2878",height:"1800"})),(0,o.kt)("h2",{id:"record-comment"},"Record Comment"),(0,o.kt)("h3",{id:"add-comment"},"Add Comment"),(0,o.kt)("p",null,"In an expanded form,"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Comments")," tab"),(0,o.kt)("li",{parentName:"ol"},"A list of all the comments made to the record will be displayed"),(0,o.kt)("li",{parentName:"ol"},"Click on input box at the bottom to add a new comment, and press ",(0,o.kt)("inlineCode",{parentName:"li"},"Enter")," to save")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record comment",src:r(13305).Z,width:"2878",height:"1800"})),(0,o.kt)("h3",{id:"edit-comment"},"Edit Comment"),(0,o.kt)("p",null,"In comments list of an expanded form,"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Edit")," icon on the right side of the comment"),(0,o.kt)("li",{parentName:"ol"},"Edit the comment and "),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save")," icon OR Press ",(0,o.kt)("inlineCode",{parentName:"li"},"Enter")," to save the changes")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record comment",src:r(9797).Z,width:"2876",height:"1800"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record comment",src:r(3810).Z,width:"2876",height:"1800"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"expand record comment",src:r(79243).Z,width:"2876",height:"1800"})),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"You can only edit your own comments. You cannot delete a comment, but can edit it to remove the content.\nChanges to comments are also recorded in the audit log.")),(0,o.kt)("h2",{id:"record-actions"},"Record Actions"),(0,o.kt)("h3",{id:"copy-record-url"},"Copy Record URL"),(0,o.kt)("p",null,"In an expanded form, click ",(0,o.kt)("inlineCode",{parentName:"p"},"Copy Record URL")," to share the record form to other authorized users."),(0,o.kt)("h3",{id:"duplicate-record"},"Duplicate record"),(0,o.kt)("p",null,"Using context menu (",(0,o.kt)("inlineCode",{parentName:"p"},"..."),") in the top right corner of the expanded form, you can duplicate the record. Duplicated record will not be saved by default. You can edit the record and save it."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"delete record",src:r(75721).Z,width:"2876",height:"1800"})),(0,o.kt)("h3",{id:"delete-record"},"Delete record"),(0,o.kt)("p",null,"Using context menu (",(0,o.kt)("inlineCode",{parentName:"p"},"..."),") in the top right corner of the expanded form, you can delete the record."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"delete record",src:r(75721).Z,width:"2876",height:"1800"})),(0,o.kt)("p",null,"On the confirmation dialog, click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Delete")," button to delete the record."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"delete record",src:r(49511).Z,width:"2874",height:"1440"})))}m.isMDXComponent=!0},94773:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-audits-bf292e9a7cdbe5bf190de009938e4c6e.png"},9797:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-comments-edit-1-e662dc5437f594d10d70d8486d36d28e.png"},3810:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-comments-edit-2-e7b2e2de1b7f8fcba6a9397f45ff25bf.png"},79243:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-comments-edit-3-19a3dc35ed057a0a5366787dfd0c62d9.png"},13305:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-comments-12f3520bc08a1a26617b4818151c2ea3.png"},75721:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-context-menu-2-168bebb2555d7a38bfb2057537d0f419.png"},49511:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-delete-confirmation-8bff11568a9cb49f91ebc282f7406b17.png"},50016:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-edit-detailed-6f19acb8858b217ee834670b8deeee44.png"},5931:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-from-grid-1eaf2b31021fe85c6163aa234db48f1f.png"},13319:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/expand-record-a6994cfda6583e45767dc6b555c4955d.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/27b20541.629af8e5.js b/packages/noco-docs/dist/assets/js/27b20541.629af8e5.js new file mode 100644 index 0000000000..2174f9066c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/27b20541.629af8e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3238],{47090:e=>{e.exports=JSON.parse('{"label":"Gallery view","permalink":"/tags/gallery-view","allTagsPath":"/tags","count":10,"items":[{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","permalink":"/table-operations/filter"},{"id":"views/view-types/gallery","title":"Gallery","description":"Learn how to work with gallery view in NocoDB.","permalink":"/views/view-types/gallery"},{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"},{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","permalink":"/table-operations/search"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"},{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","permalink":"/table-operations/sort"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2888903d.9bd1bb79.js b/packages/noco-docs/dist/assets/js/2888903d.9bd1bb79.js new file mode 100644 index 0000000000..25ab0a0f28 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2888903d.9bd1bb79.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3259],{3905:(e,r,t)=>{t.d(r,{Zo:()=>p,kt:()=>f});var o=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function c(e){for(var r=1;r=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var d=o.createContext({}),l=function(e){var r=o.useContext(d),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},p=function(e){var r=l(e.components);return o.createElement(d.Provider,{value:r},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return o.createElement(o.Fragment,{},r)}},m=o.forwardRef((function(e,r){var t=e.components,n=e.mdxType,a=e.originalType,d=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),s=l(t),m=n,f=s["".concat(d,".").concat(m)]||s[m]||u[m]||a;return t?o.createElement(f,c(c({ref:r},p),{},{components:t})):o.createElement(f,c({ref:r},p))}));function f(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var a=t.length,c=new Array(a);c[0]=m;var i={};for(var d in r)hasOwnProperty.call(r,d)&&(i[d]=r[d]);i.originalType=e,i[s]="string"==typeof e?e:n,c[1]=i;for(var l=2;l{t.r(r),t.d(r,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var o=t(87462),n=(t(67294),t(3905));const a={title:"Create record",description:"Learn how to create a record in NocoDB.",tags:["Records","Create"],keywords:["NocoDB record","create record"]},c=void 0,i={unversionedId:"records/create-record",id:"records/create-record",title:"Create record",description:"Learn how to create a record in NocoDB.",source:"@site/docs/080.records/020.create-record.md",sourceDirName:"080.records",slug:"/records/create-record",permalink:"/records/create-record",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/080.records/020.create-record.md",tags:[{label:"Records",permalink:"/tags/records"},{label:"Create",permalink:"/tags/create"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create record",description:"Learn how to create a record in NocoDB.",tags:["Records","Create"],keywords:["NocoDB record","create record"]},sidebar:"tutorialSidebar",previous:{title:"Records overview",permalink:"/records/records-overview"},next:{title:"Expanded record",permalink:"/records/expand-record"}},d={},l=[{value:"Related topics",id:"related-topics",level:3}],p={toc:l},s="wrapper";function u(e){let{components:r,...a}=e;return(0,n.kt)(s,(0,o.Z)({},p,a,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"A new record can be added by using the ",(0,n.kt)("inlineCode",{parentName:"p"},"New Record")," button in the bottom left corner of the grid view. Default behaviour of this button is to add a new empty record at the end of the grid view. Fields for a record can be populated by clicking on the cell and entering the value."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"An empty record can also be added by using ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon in the last record of the grid view."),(0,n.kt)("li",{parentName:"ul"},"When on last record, ",(0,n.kt)("inlineCode",{parentName:"li"},"Enter")," key can be used to add a new empty record to the grid view."))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:t(35003).Z,width:"2876",height:"1414"})),(0,n.kt)("p",null,"NocoDB also provides convenience of a form to populate fields in a record. To add a new record using a form, "),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on the up-arrow in ",(0,n.kt)("inlineCode",{parentName:"li"},"New Record")," button; this expands options for adding a new record. "),(0,n.kt)("li",{parentName:"ol"},"Select ",(0,n.kt)("inlineCode",{parentName:"li"},"New Record - Form")," option. This will reconfigure default behaviour of ",(0,n.kt)("inlineCode",{parentName:"li"},"New Record")," button to add a new record using a form.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:t(35589).Z,width:"2876",height:"1422"})),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"To revert back to default behaviour of ",(0,n.kt)("inlineCode",{parentName:"p"},"New Record")," button, click on the up-arrow in ",(0,n.kt)("inlineCode",{parentName:"p"},"New Record")," button and select ",(0,n.kt)("inlineCode",{parentName:"p"},"New Record - Grid")," option.")),(0,n.kt)("h3",{id:"related-topics"},"Related topics"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/records/expand-record"},"Expanded record view"))))}u.isMDXComponent=!0},35589:(e,r,t)=>{t.d(r,{Z:()=>o});const o=t.p+"assets/images/new-record-form-80ab9af2574b27d6cf824542057f15af.png"},35003:(e,r,t)=>{t.d(r,{Z:()=>o});const o=t.p+"assets/images/new-record-grid-7ae6148311e56de598a0d729847d8abb.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2a1ace55.e7541d41.js b/packages/noco-docs/dist/assets/js/2a1ace55.e7541d41.js new file mode 100644 index 0000000000..318c477dc3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2a1ace55.e7541d41.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4829],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function r(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=o.createContext({}),s=function(e){var t=o.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=s(e.components);return o.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=n,g=d["".concat(c,".").concat(m)]||d[m]||u[m]||l;return a?o.createElement(g,r(r({ref:t},p),{},{components:a})):o.createElement(g,r({ref:t},p))}));function g(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,r=new Array(l);r[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:n,r[1]=i;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>b,frontMatter:()=>l,metadata:()=>i,toc:()=>s});var o=a(87462),n=(a(67294),a(3905));const l={title:"Installation",description:"Simple installation - takes about three minutes!",tags:["Open Source"],keywords:["NocoDB installation","NocoDB docker installation","NocoDB nodejs installation","NocoDB quick try","NocoDB prerequisites"]},r=void 0,i={unversionedId:"getting-started/self-hosted/installation",id:"getting-started/self-hosted/installation",title:"Installation",description:"Simple installation - takes about three minutes!",source:"@site/docs/020.getting-started/050.self-hosted/010.installation.md",sourceDirName:"020.getting-started/050.self-hosted",slug:"/getting-started/self-hosted/installation",permalink:"/getting-started/self-hosted/installation",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/050.self-hosted/010.installation.md",tags:[{label:"Open Source",permalink:"/tags/open-source"}],version:"current",sidebarPosition:10,frontMatter:{title:"Installation",description:"Simple installation - takes about three minutes!",tags:["Open Source"],keywords:["NocoDB installation","NocoDB docker installation","NocoDB nodejs installation","NocoDB quick try","NocoDB prerequisites"]},sidebar:"tutorialSidebar",previous:{title:"Keyboard shortcuts",permalink:"/getting-started/keyboard-shortcuts"},next:{title:"Environment variables",permalink:"/getting-started/self-hosted/environment-variables"}},c={},s=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Quick try",id:"quick-try",level:2},{value:"Docker",id:"docker",level:3},{value:"Docker Compose",id:"docker-compose",level:3},{value:"NPX",id:"npx",level:3},{value:"Preview:",id:"preview",level:4},{value:"Homebrew",id:"homebrew",level:3},{value:"Executables",id:"executables",level:3},{value:"Node Application",id:"node-application",level:3},{value:"AWS ECS (Fargate)",id:"aws-ecs-fargate",level:3},{value:"Create ECS Cluster",id:"create-ecs-cluster",level:4},{value:"Create Log group",id:"create-log-group",level:4},{value:"Create ECS Task Definiton",id:"create-ecs-task-definiton",level:4},{value:"Create ECS Service",id:"create-ecs-service",level:4},{value:"GCP (Cloud Run)",id:"gcp-cloud-run",level:3},{value:"Pull NocoDB Image on Cloud Shell",id:"pull-nocodb-image-on-cloud-shell",level:4},{value:"Deploy NocoDB on Cloud Run",id:"deploy-nocodb-on-cloud-run",level:4},{value:"DigitalOcean (App)",id:"digitalocean-app",level:3},{value:"Create Apps",id:"create-apps",level:4},{value:"Choose Source: Docker Hub",id:"choose-source-docker-hub",level:4},{value:"Choose Source: Repository",id:"choose-source-repository",level:4},{value:"Optional Additional Configurations",id:"optional-additional-configurations",level:4},{value:"Name your web service",id:"name-your-web-service",level:4},{value:"Finalize and Launch",id:"finalize-and-launch",level:4},{value:"Cloudron",id:"cloudron",level:3},{value:"Navigate to App Store",id:"navigate-to-app-store",level:4},{value:"Search NocoDB",id:"search-nocodb",level:4},{value:"Click Install",id:"click-install",level:4},{value:"Configure NocoDB",id:"configure-nocodb",level:4},{value:"Go to My App and Launch NocoDB",id:"go-to-my-app-and-launch-nocodb",level:4},{value:"CapRover",id:"caprover",level:3},{value:"Login and Click One-Click Apps / Databases",id:"login-and-click-one-click-apps--databases",level:4},{value:"Search NocoDB",id:"search-nocodb-1",level:4},{value:"Configure NocoDB and Deploy",id:"configure-nocodb-and-deploy",level:4},{value:"Railway",id:"railway",level:3},{value:"Navigate to Templates",id:"navigate-to-templates",level:4},{value:"Configure NocoDB and Deploy",id:"configure-nocodb-and-deploy-1",level:4},{value:"FreeBSD / FreeNAS / TrueNAS Jail",id:"freebsd--freenas--truenas-jail",level:3},{value:"Sample Demos",id:"sample-demos",level:2},{value:"Code Sandbox",id:"code-sandbox",level:3},{value:"Docker deploying with one command",id:"docker-deploying-with-one-command",level:3},{value:"Using NPX",id:"using-npx",level:3}],p=e=>function(t){return console.warn("Component "+e+" was not imported, exported, or provided by MDXProvider as global scope"),(0,n.kt)("div",t)},d=p("Tabs"),u=p("TabItem"),m={toc:s},g="wrapper";function b(e){let{components:t,...a}=e;return(0,n.kt)(g,(0,o.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Simple installation - takes about three minutes!"),(0,n.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.docker.com/get-started"},"Docker")," or ",(0,n.kt)("a",{parentName:"li",href:"https://nodejs.org/en/download"},"Node.js")," ( > v18.x )\n")),(0,n.kt)("h2",{id:"quick-try"},"Quick try"),(0,n.kt)("h3",{id:"docker"},"Docker"),(0,n.kt)("p",null,"If you are a Docker user, you may try this way!"),(0,n.kt)(d,{mdxType:"Tabs"},(0,n.kt)(u,{value:"sqlite",label:"SQLite",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\nnocodb/nocodb:latest\n'))),(0,n.kt)(u,{value:"mysql",label:"MySQL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-mysql \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="mysql2://host.docker.internal:3306?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n'))),(0,n.kt)(u,{value:"postgres",label:"Postgres",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-postgres \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n'))),(0,n.kt)(u,{value:"sqlserver",label:"SQL Server",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-mssql \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="mssql://host.docker.internal:1433?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n')))),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"To persist data in docker you can mount volume at ",(0,n.kt)("inlineCode",{parentName:"p"},"/usr/app/data/")," since 0.10.6. In older version mount at ",(0,n.kt)("inlineCode",{parentName:"p"},"/usr/src/app"),". Otherwise your data will be lost after recreating the container.")),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/issues/1340#issuecomment-1049481043"},"MySQL Docker"),".")),(0,n.kt)("h3",{id:"docker-compose"},"Docker Compose"),(0,n.kt)("p",null,"We provide different docker-compose.yml files under ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/tree/master/docker-compose"},"this directory"),". Here are some examples."),(0,n.kt)(d,{mdxType:"Tabs"},(0,n.kt)(u,{value:"mysql",label:"MySQL",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/mysql\ndocker-compose up -d\n"))),(0,n.kt)(u,{value:"postgres",label:"Postgres",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/pg\ndocker-compose up -d\n"))),(0,n.kt)(u,{value:"sqlserver",label:"SQL Server",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/mssql\ndocker-compose up -d\n")))),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"To persist data in docker you can mount volume at ",(0,n.kt)("inlineCode",{parentName:"p"},"/usr/app/data/")," since 0.10.6. In older version mount at ",(0,n.kt)("inlineCode",{parentName:"p"},"/usr/src/app"),".\nIf you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/issues/1313#issuecomment-1046625974"},"MySQL Docker Compose"),".")),(0,n.kt)("h3",{id:"npx"},"NPX"),(0,n.kt)("p",null,"You can run below command if you need an interactive configuration."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"npx create-nocodb-app\n")),(0,n.kt)("h4",{id:"preview"},"Preview:"),(0,n.kt)("img",{width:"587",alt:"image",src:"https://user-images.githubusercontent.com/35857179/161526235-5ee0d592-0105-4a57-aa53-b1048dca6aad.png"}),(0,n.kt)("h3",{id:"homebrew"},"Homebrew"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap nocodb/nocodb\nbrew install nocodb\nnocodb\n")),(0,n.kt)("h3",{id:"executables"},"Executables"),(0,n.kt)("p",null,"You can download executables directly and run without any extra dependency. Use the right command based on your platform."),(0,n.kt)(d,{mdxType:"Tabs"},(0,n.kt)(u,{value:"MacOS (x64)",label:"MacOS (x64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/macos-x64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n"))),(0,n.kt)(u,{value:"MacOS (arm64)",label:"MacOS (arm64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/macos-arm64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n"))),(0,n.kt)(u,{value:"Linux (x64)",label:"Linux (x64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/linux-x64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n"))),(0,n.kt)(u,{value:"Linux (arm64)",label:"Linux (arm64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/linux-arm64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n"))),(0,n.kt)(u,{value:"Windows (x64)",label:"Windows (x64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"iwr http://get.nocodb.com/win-x64.exe\n.\\Noco-win-x64.exe\n"))),(0,n.kt)(u,{value:"Windows (arm64)",label:"Windows (arm64)",mdxType:"TabItem"},(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"iwr http://get.nocodb.com/win-arm64.exe\n.\\Noco-win-arm64.exe\n")))),(0,n.kt)("h3",{id:"node-application"},"Node Application"),(0,n.kt)("p",null,"We provide a simple NodeJS Application for getting started."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb-seed\ncd nocodb-seed\nnpm install\nnpm start\n")),(0,n.kt)("h3",{id:"aws-ecs-fargate"},"AWS ECS (Fargate)"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"create-ecs-cluster"},"Create ECS Cluster"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"aws ecs create-cluster \\\n--cluster-name \n")),(0,n.kt)("h4",{id:"create-log-group"},"Create Log group"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre"},"aws logs create-log-group \\\n--log-group-name /ecs//\n")),(0,n.kt)("h4",{id:"create-ecs-task-definiton"},"Create ECS Task Definiton"),(0,n.kt)("p",null," Every time you create it, it will add a new version. If it is not existing, the version will be 1. "),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'aws ecs register-task-definition \\\n--cli-input-json "file://./.json"\n')),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"This json file defines the container specification. You can define secrets such as NC_DB and environment variables here.")),(0,n.kt)("p",null," Here's the sample Task Definition"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-json"},'{\n "family": "nocodb-sample-task-def",\n "networkMode": "awsvpc",\n "containerDefinitions": [{\n "name": "",\n "image": "nocodb/nocodb:latest",\n "essential": true,\n "logConfiguration": {\n "logDriver": "awslogs",\n "options": {\n "awslogs-group": "/ecs//",\n "awslogs-region": "",\n "awslogs-stream-prefix": "ecs"\n }\n },\n "secrets": [{\n "name": "",\n "valueFrom": ""\n }],\n "environment": [{\n "name": "",\n "value": ""\n }],\n "portMappings": [{\n "containerPort": 8080,\n "hostPort": 8080,\n "protocol": "tcp"\n }]\n }],\n "requiresCompatibilities": [\n "FARGATE"\n ],\n "cpu": "256",\n "memory": "512",\n "executionRoleArn": "",\n "taskRoleArn": ""\n}\n')),(0,n.kt)("h4",{id:"create-ecs-service"},"Create ECS Service"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},'aws ecs create-service \\\n--cluster \\\n--service-name \\\n--task-definition : \\\n--desired-count \\\n--launch-type "FARGATE" \\\n--platform-version \\\n--health-check-grace-period-seconds \\\n--network-configuration "awsvpcConfiguration={subnets=[""], securityGroups=[""], assignPublicIp=ENABLED}" \\\n--load-balancer targetGroupArn=,containerName=,containerPort=\n')),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"If your service fails to start, you may check the logs in ECS console or in Cloudwatch. Generally it fails due to the connection between ECS container and NC_DB. Make sure the security groups have the correct inbound and outbound rules. "))),(0,n.kt)("h3",{id:"gcp-cloud-run"},"GCP (Cloud Run)"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"pull-nocodb-image-on-cloud-shell"},"Pull NocoDB Image on Cloud Shell"),(0,n.kt)("p",null," Since Cloud Run only supports images from Google Container Registry (GCR) or Artifact Registry, we need to pull NocoDB image, tag it and push it in GCP using Cloud Shell. Here are some sample commands which you can execute in Cloud Shell."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"# pull latest NocoDB image\ndocker pull nocodb/nocodb:latest\n\n# tag the image\ndocker tag nocodb/nocodb:latest gcr.io//nocodb/nocodb:latest\n\n# push the image to GCR\ndocker push gcr.io//nocodb/nocodb:latest\n")),(0,n.kt)("h4",{id:"deploy-nocodb-on-cloud-run"},"Deploy NocoDB on Cloud Run"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"gcloud run deploy --image=gcr.io//nocodb/nocodb:latest \\\n --region=us-central1 \\\n --allow-unauthenticated \\\n --platform=managed \n"))),(0,n.kt)("h3",{id:"digitalocean-app"},"DigitalOcean (App)"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"create-apps"},"Create Apps"),(0,n.kt)("p",null," On Home page, Click on Create icon & Select Apps (Deploy your code)."),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790558-f8fe5580-5a58-412c-9c2e-145587712bf2.png",alt:"Screenshot 2022-02-19 at 12 17 43 PM"})),(0,n.kt)("h4",{id:"choose-source-docker-hub"},"Choose Source: Docker Hub"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790563-b5b6d5b4-0bdc-4718-8cea-0a7ee52f283b.png",alt:"Screenshot 2022-02-19 at 12 22 01 PM"})),(0,n.kt)("h4",{id:"choose-source-repository"},"Choose Source: Repository"),(0,n.kt)("p",null," Configure Source Repository as ",(0,n.kt)("inlineCode",{parentName:"p"},"nocodb/nocodb"),". Optionally you can pick release tag if you are interested in specific NocoDB version."),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790564-1dcb5e33-3a57-471a-a44c-835a410a0cb7.png",alt:"Screenshot 2022-02-19 at 12 23 11 PM"})),(0,n.kt)("h4",{id:"optional-additional-configurations"},"[Optional]"," Additional Configurations"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790565-c0234b2e-ad50-4042-90b6-4f8798f1d585.png",alt:"Screenshot 2022-02-19 at 12 24 44 PM"})),(0,n.kt)("h4",{id:"name-your-web-service"},"Name your web service"),(0,n.kt)("p",null," Pick a name for your NocoDB application. This name will become part of URL subsequently\nPick nearest Region for cloud hosting\n",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790567-a6e65e4e-9aa0-4edb-998e-da8803ad6e23.png",alt:"Screenshot 2022-02-19 at 12 28 11 PM"})),(0,n.kt)("h4",{id:"finalize-and-launch"},"Finalize and Launch"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Select hosting plan for your NocoDB application")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},'Click "Launch APP"'),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790570-62044713-5cca-4d06-82ec-f3cc257218a1.png",alt:"Screenshot 2022-02-19 at 12 29 23 PM"})),(0,n.kt)("p",{parentName:"li"},"Application will be build & URL will be live in a minute! The URL will be something like ",(0,n.kt)("a",{parentName:"p",href:"https://simply-nocodb-rsyir.ondigitalocean.app/"},"https://simply-nocodb-rsyir.ondigitalocean.app/"))))),(0,n.kt)("h3",{id:"cloudron"},"Cloudron"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"navigate-to-app-store"},"Navigate to App Store"),(0,n.kt)("p",null," Log into Cloudron and select App Store"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700146-aae90503-a8fd-4bc5-8397-39f0bc279606.png",alt:"image"})),(0,n.kt)("h4",{id:"search-nocodb"},"Search NocoDB"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700181-b5303919-70b8-4cf8-bebe-7e75aca601f3.png",alt:"image"})),(0,n.kt)("h4",{id:"click-install"},"Click Install"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700192-d702f5c2-2afa-45c5-9823-4ebe9e141b01.png",alt:"image"})),(0,n.kt)("h4",{id:"configure-nocodb"},"Configure NocoDB"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700230-c35e934f-bd93-4948-8f31-935483b30571.png",alt:"image"})),(0,n.kt)("h4",{id:"go-to-my-app-and-launch-nocodb"},"Go to My App and Launch NocoDB"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700464-50098cb1-bf94-42bb-a63a-cc0aad671913.png",alt:"image"}))),(0,n.kt)("h3",{id:"caprover"},"CapRover"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"login-and-click-one-click-apps--databases"},"Login and Click One-Click Apps / Databases"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701420-7fe5c396-a488-456c-98de-6f2ee1151fc5.png",alt:"image"})),(0,n.kt)("h4",{id:"search-nocodb-1"},"Search NocoDB"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701537-63e7efc5-013b-4ca9-8659-56e9d536e7d0.png",alt:"image"})),(0,n.kt)("h4",{id:"configure-nocodb-and-deploy"},"Configure NocoDB and Deploy"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701576-19519df5-2aa4-435d-8fc6-7bc684b9cfe1.png",alt:"image"}))),(0,n.kt)("h3",{id:"railway"},"Railway"),(0,n.kt)("details",null,(0,n.kt)("summary",null,"Click to Expand"),(0,n.kt)("h4",{id:"navigate-to-templates"},"Navigate to Templates"),(0,n.kt)("p",null," Go to ",(0,n.kt)("a",{parentName:"p",href:"https://railway.app/templates"},"Templates"),", Search NocoDB and click Deploy"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194702833-1bea22ee-6dfa-4024-ac27-e33fe56e5500.png",alt:"image"})),(0,n.kt)("h4",{id:"configure-nocodb-and-deploy-1"},"Configure NocoDB and Deploy"),(0,n.kt)("p",null," ",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194702960-149393fe-b00f-4d84-9e54-22cb7616ba44.png",alt:"image"}))),(0,n.kt)("h3",{id:"freebsd--freenas--truenas-jail"},"FreeBSD / FreeNAS / TrueNAS Jail"),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://gist.github.com/Zamana/e9281d736f9e9ce5882c6f4b140a590e"},"here")," provided by ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/Zamana"},"C. R. Zamana"),"."),(0,n.kt)("h2",{id:"sample-demos"},"Sample Demos"),(0,n.kt)("h3",{id:"code-sandbox"},"Code Sandbox"),(0,n.kt)("iframe",{width:"100%",height:"500",src:"https://codesandbox.io/embed/vigorous-firefly-80kq5?hidenavigation=1&theme=dark",title:"Code Sandbox",frameBorder:"0",allow:"clipboard-write"}),(0,n.kt)("h3",{id:"docker-deploying-with-one-command"},"Docker deploying with one command"),(0,n.kt)("iframe",{width:"100%",height:"500",src:"https://www.youtube.com/embed/K-UEecQyiOk",title:"YouTube video player",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0}),(0,n.kt)("h3",{id:"using-npx"},"Using NPX"),(0,n.kt)("iframe",{width:"100%",height:"500",src:"https://www.youtube.com/embed/v6Nn75P1p7I",title:"YouTube video player",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0}))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2a42d1d2.2b1dab84.js b/packages/noco-docs/dist/assets/js/2a42d1d2.2b1dab84.js new file mode 100644 index 0000000000..3dc567c7ca --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2a42d1d2.2b1dab84.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2636],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>b});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(a),d=n,b=u["".concat(s,".").concat(d)]||u[d]||c[d]||o;return a?r.createElement(b,i(i({ref:t},m),{},{components:a})):r.createElement(b,i({ref:t},m))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const o={title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes"},i=void 0,l={unversionedId:"setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free",id:"version-0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free",title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/200.import-airtable-to-sql-database-within-a-minute-for-free.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free",permalink:"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/200.import-airtable-to-sql-database-within-a-minute-for-free.md",tags:[],version:"0.109.7",sidebarPosition:200,frontMatter:{title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes"},sidebar:"tutorialSidebar",previous:{title:"Expanded Form",permalink:"/0.109.7/setup-and-usages/expanded-form"},next:{title:"Usage Information",permalink:"/0.109.7/setup-and-usages/usage-information"}},s={},p=[{value:"Get Airtable Credentials",id:"get-airtable-credentials",level:2},{value:"Retrieve API Key",id:"retrieve-api-key",level:3},{value:"Retrieve Share Base ID / URL",id:"retrieve-share-base-id--url",level:3},{value:"Import Airtable to NocoDB",id:"import-airtable-to-nocodb",level:2}],m={toc:p},u="wrapper";function c(e){let{components:t,...a}=e;return(0,n.kt)(u,(0,r.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"NocoDB allows a complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes."),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"Import from Airtable is in beta version. See ",(0,n.kt)("a",{href:"https://github.com/nocodb/nocodb/discussions/2122",target:"_blank"},"Importing Airtable To NocoDB")," for the migration notes.")),(0,n.kt)("h2",{id:"get-airtable-credentials"},"Get Airtable Credentials"),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"You need to retrieve API key and Shared Base ID / URL from Airtable.")),(0,n.kt)("h3",{id:"retrieve-api-key"},"Retrieve API Key"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},"Copy your Airtable API Key from ",(0,n.kt)("a",{parentName:"p",href:"https://airtable.com/account"},"Airtable Accounts")," page"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/168569905-48c16d6d-c44a-4337-be49-0ac3dc1f7b75.png",alt:"Screenshot 2022-05-16 at 1 50 07 PM"})))),(0,n.kt)("h3",{id:"retrieve-share-base-id--url"},"Retrieve Share Base ID / URL"),(0,n.kt)("p",null,"See ",(0,n.kt)("a",{parentName:"p",href:"https://support.airtable.com/hc/en-us/articles/205752117-Creating-a-base-share-link-or-a-view-share-link#basesharelink"},"here")," for detailed procedures."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Open ",(0,n.kt)("inlineCode",{parentName:"p"},"Share")," menu in your Project / Base\n",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/168572054-533b8c19-d76e-4add-b876-f1e0570ac33c.png",alt:"Screenshot 2022-05-16 at 3 47 27 PM"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Open tab ",(0,n.kt)("inlineCode",{parentName:"p"},"Share Publicly"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Enable ",(0,n.kt)("inlineCode",{parentName:"p"},"Turn on full base access"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Copy generated shared base URL\n",(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/168572062-5dee065d-2394-426d-8f43-77ecc0c9b73f.png",alt:"Screenshot 2022-05-16 at 3 41 54 PM"})))),(0,n.kt)("h2",{id:"import-airtable-to-nocodb"},"Import Airtable to NocoDB"),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"Prerequisites: ",(0,n.kt)("br",null)," - A NocoDB Project ",(0,n.kt)("br",null)," - Airtable Credentials")),(0,n.kt)("p",null,"Below are 3 simple steps"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Go to your Project, Open ",(0,n.kt)("inlineCode",{parentName:"li"},"Add / Import")," menu and click ",(0,n.kt)("inlineCode",{parentName:"li"},"Airtable"),".")),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190057053-983126b3-287a-4bc4-a1d8-fa89da8f40f8.png",alt:"Screenshot 2022-09-14 at 9 27 51 AM"})),(0,n.kt)("ol",{start:2},(0,n.kt)("li",{parentName:"ol"},"Input API key & Shared Base ID / URL (retrieved from ",(0,n.kt)("inlineCode",{parentName:"li"},"Get Airtable Credentials")," above).")),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"<1> API Key"),(0,n.kt)("li",{parentName:"ul"},"<2> Share Base ID"),(0,n.kt)("li",{parentName:"ul"},"<3> Configuration option",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Import Data: disable this option to import only table & view schema's"),(0,n.kt)("li",{parentName:"ul"},"Import Secondary Views: disable this option to import only primary grid view per table"),(0,n.kt)("li",{parentName:"ul"},"Import Rollup Columns: disable this option to skip Rollup column import"),(0,n.kt)("li",{parentName:"ul"},"Import Lookup Columns: disable this option to skip Lookup column import"),(0,n.kt)("li",{parentName:"ul"},"Import Attachments Columns: disable this option to skip Attachment column import"),(0,n.kt)("li",{parentName:"ul"},"\\"," Import Formula Columns: disable this option to skip Formula (computation) column import")))),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190057133-92807b16-4f2b-4c58-8bae-a2cfe677ee62.png",alt:"Screenshot 2022-09-14 at 9 30 14 AM"})),(0,n.kt)("ol",{start:3},(0,n.kt)("li",{parentName:"ol"},"Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Import")," and you will see the status"),(0,n.kt)("li",{parentName:"ol"},"Wait until ",(0,n.kt)("inlineCode",{parentName:"li"},"Go To Dashboard")," button is activated on the modal. Import details are captured in log window.")),(0,n.kt)("p",null,(0,n.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190057152-be9ec6cb-e414-465c-8967-d1ad40478ce1.png",alt:"Screenshot 2022-09-14 at 9 33 42 AM"})))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2b263996.998143cf.js b/packages/noco-docs/dist/assets/js/2b263996.998143cf.js new file mode 100644 index 0000000000..6abb411446 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2b263996.998143cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[403],{3905:(e,o,t)=>{t.d(o,{Zo:()=>b,kt:()=>h});var r=t(67294);function n(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function a(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);o&&(r=r.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var o=1;o=0||(n[t]=e[t]);return n}(e,o);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var c=r.createContext({}),s=function(e){var o=r.useContext(c),t=o;return e&&(t="function"==typeof e?e(o):i(i({},o),e)),t},b=function(e){var o=s(e.components);return r.createElement(c.Provider,{value:o},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var o=e.children;return r.createElement(r.Fragment,{},o)}},k=r.forwardRef((function(e,o){var t=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,b=l(e,["components","mdxType","originalType","parentName"]),p=s(t),k=n,h=p["".concat(c,".").concat(k)]||p[k]||u[k]||a;return t?r.createElement(h,i(i({ref:o},b),{},{components:t})):r.createElement(h,i({ref:o},b))}));function h(e,o){var t=arguments,n=o&&o.mdxType;if("string"==typeof e||n){var a=t.length,i=new Array(a);i[0]=k;var l={};for(var c in o)hasOwnProperty.call(o,c)&&(l[c]=o[c]);l.originalType=e,l[p]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{t.r(o),t.d(o,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var r=t(87462),n=(t(67294),t(3905));const a={title:"Webhook overview",description:"Learn how to create, modify and delete webhooks.",tags:["Webhook","Overview"],keywords:["Webhook overview","NocoDB webhook","create webhook","modify webhook","delete webhook"]},i=void 0,l={unversionedId:"automation/webhook/webhook-overview",id:"automation/webhook/webhook-overview",title:"Webhook overview",description:"Learn how to create, modify and delete webhooks.",source:"@site/docs/130.automation/020.webhook/010.webhook-overview.md",sourceDirName:"130.automation/020.webhook",slug:"/automation/webhook/webhook-overview",permalink:"/automation/webhook/webhook-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/130.automation/020.webhook/010.webhook-overview.md",tags:[{label:"Webhook",permalink:"/tags/webhook"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Webhook overview",description:"Learn how to create, modify and delete webhooks.",tags:["Webhook","Overview"],keywords:["Webhook overview","NocoDB webhook","create webhook","modify webhook","delete webhook"]},sidebar:"tutorialSidebar",previous:{title:"In Open Source",permalink:"/collaboration/oss-specific-details"},next:{title:"Create webhook",permalink:"/automation/webhook/create-webhook"}},c={},s=[],b={toc:s},p="wrapper";function u(e){let{components:o,...t}=e;return(0,n.kt)(p,(0,r.Z)({},b,t,{components:o,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"You can employ webhooks to notify external systems whenever there are additions, updates, or removals of records within NocoDB. This feature allows you to receive instantaneous notifications for any changes made to your database. NocoDB also offers webhooks for bulk endpoints for creating, updating, or deleting multiple records simultaneously."),(0,n.kt)("p",null,"Note that, Webhooks currently are specific to associated table."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"create-webhook"},"Create Webhook")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"actions-on-webhook#enable/disable-webhook"},"Disable Webhook")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"actions-on-webhook#edit-webhook"},"Modify Webhook")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"actions-on-webhook#duplicate-webhook"},"Duplicate Webhook")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"actions-on-webhook#delete-webhook"},"Delete Webhook"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2bb712de.1b68f9cc.js b/packages/noco-docs/dist/assets/js/2bb712de.1b68f9cc.js new file mode 100644 index 0000000000..060c43e5c5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2bb712de.1b68f9cc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1771],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>v});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function n(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var l=a.createContext({}),d=function(e){var t=a.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):n(n({},t),e)),i},c=function(e){var t=d(e.components);return a.createElement(l.Provider,{value:t},e.children)},p="mdxType",w={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=d(i),h=r,v=p["".concat(l,".").concat(h)]||p[h]||w[h]||o;return i?a.createElement(v,n(n({ref:t},c),{},{components:i})):a.createElement(v,n({ref:t},c))}));function v(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=i.length,n=new Array(o);n[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,n[1]=s;for(var d=2;d{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>w,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var a=i(87462),r=(i(67294),i(3905));const o={title:"Share view",description:"Learn how to share a view publicly in NocoDB.",tags:["Views","Share","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","share view","share","share view with password protection","share view with download options"]},n=void 0,s={unversionedId:"views/share-view",id:"views/share-view",title:"Share view",description:"Learn how to share a view publicly in NocoDB.",source:"@site/docs/090.views/025.share-view.md",sourceDirName:"090.views",slug:"/views/share-view",permalink:"/views/share-view",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/025.share-view.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Share",permalink:"/tags/share"},{label:"Grid view",permalink:"/tags/grid-view"},{label:"Form view",permalink:"/tags/form-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Gallery view",permalink:"/tags/gallery-view"}],version:"current",sidebarPosition:25,frontMatter:{title:"Share view",description:"Learn how to share a view publicly in NocoDB.",tags:["Views","Share","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","share view","share","share view with password protection","share view with download options"]},sidebar:"tutorialSidebar",previous:{title:"Create view",permalink:"/views/create-view"},next:{title:"Grid",permalink:"/views/view-types/grid"}},l={},d=[{value:"Generate Share View",id:"generate-share-view",level:2},{value:"Share view options",id:"share-view-options",level:3},{value:"Password protection",id:"password-protection",level:4},{value:"Download options",id:"download-options",level:4},{value:"Share Form View Options",id:"share-form-view-options",level:3},{value:"Access Share View",id:"access-share-view",level:2}],c={toc:d},p="wrapper";function w(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Sharing a specific view of a table becomes highly valuable when you need to collaborate with individuals outside your organization who need access to specific sections of your database. This shared view provides a read-only perspective, accessible to anyone, regardless of their workspace affiliation. You have control over which data fields and records are visible to these external viewers, ensuring that any sensitive data remains hidden. Furthermore, if you decide to make changes to the visible fields or records within the view, the shared link will promptly reflect these adjustments, updating in real-time."),(0,r.kt)("h2",{id:"generate-share-view"},"Generate Share View"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Share")," button on the top right of the toolbar"),(0,r.kt)("li",{parentName:"ol"},"Toggle ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public viewing")," to create shared view link"),(0,r.kt)("li",{parentName:"ol"},"Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Copy")," button to copy the link to clipboard")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"share button",src:i(13890).Z,width:"2894",height:"864"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"shared view",src:i(34067).Z,width:"2876",height:"1800"})),(0,r.kt)("h3",{id:"share-view-options"},"Share view options"),(0,r.kt)("h4",{id:"password-protection"},"Password protection"),(0,r.kt)("p",null,"You can enable ",(0,r.kt)("inlineCode",{parentName:"p"},"Restrict access with a password")," if you want a password-protected view"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"password protection",src:i(80589).Z,width:"2876",height:"1800"})),(0,r.kt)("h4",{id:"download-options"},"Download options"),(0,r.kt)("p",null,"You can toggle ",(0,r.kt)("inlineCode",{parentName:"p"},"Allow Download")," button to enable or disable download CSV/XLSX options in the shared view link"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"download options",src:i(2008).Z,width:"2876",height:"1800"})),(0,r.kt)("h3",{id:"share-form-view-options"},"Share Form View Options"),(0,r.kt)("p",null,"Form view has additional customizations for shared view. You can enable/disable the following options for shared form view:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"Survey mode"),": This option when enabled, will display the form in survey mode."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"RTL Orientation"),": This option when enabled, will display the form in RTL orientation."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"Themes"),": You can select a theme for the form from the dropdown.\n",(0,r.kt)("img",{alt:"form view options",src:i(27579).Z,width:"2876",height:"1800"}))),(0,r.kt)("h2",{id:"access-share-view"},"Access Share View"),(0,r.kt)("p",null,"To access the shared view, please follow the steps below:\nClick on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Shared View URL"),". If the URL is password-protected, you will be prompted to enter the password to unlock it. Please input the required password to proceed."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"password modal",src:i(62814).Z,width:"1328",height:"846"})),(0,r.kt)("p",null,"Once the password is successfully entered and authenticated, you will gain access to the shared view.\nIn the event that the URL is not password-protected, you will be directed to the shared view directly, without the need for a password."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"share-view",src:i(90801).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,"Users with the shared view link can only view the data and cannot make any changes to the view or its content. Records and fields in the shared view will be updated in real-time as changes are made to the original view. Users accessing shared view can apply filters and sort records as per their requirements."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that, filters & sorts applied to shared view will not be persisted. These filters & sorts will be reset when the shared view is accessed again.")))}w.isMDXComponent=!0},13890:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-button-9751630544eab59c43f368bcbe4aaaae.png"},27579:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-form-d98371a23098e020e611302bcb5ebe40.png"},80589:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-modal-2-4bb63f03e7cb528595d3f2f6335fca02.png"},2008:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-modal-3-1202422c5c9bf2b234a5b5ed7a05e805.png"},34067:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-modal-2c40f95aa822fa2830e1f205431a4b4e.png"},62814:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-password-8b55b2f905ed895f6ceddccad842c205.png"},90801:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/share-view-22f8daabd281e5b6199d1e03ab814378.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2c8a1eac.98d5b5f9.js b/packages/noco-docs/dist/assets/js/2c8a1eac.98d5b5f9.js new file mode 100644 index 0000000000..35e99a11ad --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2c8a1eac.98d5b5f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5631],{71411:e=>{e.exports=JSON.parse('{"label":"Kanban view","permalink":"/tags/kanban-view","allTagsPath":"/tags","count":10,"items":[{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","permalink":"/table-operations/filter"},{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"},{"id":"views/view-types/kanban","title":"Kanban","description":"Learn how to work with kanban view in NocoDB.","permalink":"/views/view-types/kanban"},{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","permalink":"/table-operations/search"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"},{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","permalink":"/table-operations/sort"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2cbe0325.3f1214c3.js b/packages/noco-docs/dist/assets/js/2cbe0325.3f1214c3.js new file mode 100644 index 0000000000..304c6ec052 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2cbe0325.3f1214c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1245],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>u});var a=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function l(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,a)}return i}function n(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var d=a.createContext({}),s=function(e){var t=a.useContext(d),i=t;return e&&(i="function"==typeof e?e(t):n(n({},t),e)),i},p=function(e){var t=s(e.components);return a.createElement(d.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var i=e.components,r=e.mdxType,l=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=s(i),f=r,u=m["".concat(d,".").concat(f)]||m[f]||c[f]||l;return i?a.createElement(u,n(n({ref:t},p),{},{components:i})):a.createElement(u,n({ref:t},p))}));function u(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=i.length,n=new Array(l);n[0]=f;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[m]="string"==typeof e?e:r,n[1]=o;for(var s=2;s{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>n,default:()=>c,frontMatter:()=>l,metadata:()=>o,toc:()=>s});var a=i(87462),r=(i(67294),i(3905));const l={title:"Time",description:"This article explains how to create & work with a Time field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create time field"]},n=void 0,o={unversionedId:"fields/field-types/date-time-based/time",id:"fields/field-types/date-time-based/time",title:"Time",description:"This article explains how to create & work with a Time field.",source:"@site/docs/070.fields/040.field-types/070.date-time-based/030.time.md",sourceDirName:"070.fields/040.field-types/070.date-time-based",slug:"/fields/field-types/date-time-based/time",permalink:"/fields/field-types/date-time-based/time",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/070.date-time-based/030.time.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Date & Time",permalink:"/tags/date-time"}],version:"current",sidebarPosition:30,frontMatter:{title:"Time",description:"This article explains how to create & work with a Time field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create time field"]},sidebar:"tutorialSidebar",previous:{title:"Date",permalink:"/fields/field-types/date-time-based/date"},next:{title:"Duration",permalink:"/fields/field-types/date-time-based/duration"}},d={},s=[{value:"Create a time field",id:"create-a-time-field",level:2},{value:"Supported time formats",id:"supported-time-formats",level:3},{value:"Related fields",id:"related-fields",level:2}],p={toc:s},m="wrapper";function c(e){let{components:t,...l}=e;return(0,r.kt)(m,(0,a.Z)({},p,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Time")," field type is used to store time values in a single field. Time formats supported by NocoDB are listed in the table below."),(0,r.kt)("h2",{id:"create-a-time-field"},"Create a time field"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,r.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,r.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)"),(0,r.kt)("li",{parentName:"ol"},"Select the field type as ",(0,r.kt)("inlineCode",{parentName:"li"},"Time")," from the dropdown."),(0,r.kt)("li",{parentName:"ol"},"Configure ",(0,r.kt)("inlineCode",{parentName:"li"},"Time Format")),(0,r.kt)("li",{parentName:"ol"},"Configure default value (Optional)"),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"image",src:i(36161).Z,width:"2876",height:"1192"})),(0,r.kt)("h3",{id:"supported-time-formats"},"Supported time formats"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Format"),(0,r.kt)("th",{parentName:"tr",align:null},"Example"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"HH:mm:ss"),(0,r.kt)("td",{parentName:"tr",align:null},"12:45:30")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"HH:mm"),(0,r.kt)("td",{parentName:"tr",align:null},"14:20")))),(0,r.kt)("h2",{id:"related-fields"},"Related fields"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date-time"},"DateTime")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date"},"Date")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/duration"},"Duration"))))}c.isMDXComponent=!0},36161:(e,t,i)=>{i.d(t,{Z:()=>a});const a=i.p+"assets/images/time-e7719917464163b50837ace0db5619c0.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2d5bd7a1.a60bd427.js b/packages/noco-docs/dist/assets/js/2d5bd7a1.a60bd427.js new file mode 100644 index 0000000000..c3609d5a35 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2d5bd7a1.a60bd427.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7666],{18972:e=>{e.exports=JSON.parse('{"label":"Duplicate","permalink":"/tags/duplicate","allTagsPath":"/tags","count":6,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"},{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","permalink":"/records/actions-on-record"},{"id":"tables/actions-on-table","title":"Actions on table","description":"Learn how to rename, duplicate, and delete a table in NocoDB.","permalink":"/tables/actions-on-table"},{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","permalink":"/automation/webhook/actions-on-webhook"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2d8eea4e.8c1789a5.js b/packages/noco-docs/dist/assets/js/2d8eea4e.8c1789a5.js new file mode 100644 index 0000000000..5f06449b0b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2d8eea4e.8c1789a5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5837],{65804:o=>{o.exports=JSON.parse('{"label":"Invite","permalink":"/tags/invite","allTagsPath":"/tags","count":4,"items":[{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/collaboration/base-collaboration"},{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/collaboration/workspace-collaboration"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2eb4ec02.1f2592f8.js b/packages/noco-docs/dist/assets/js/2eb4ec02.1f2592f8.js new file mode 100644 index 0000000000..a1baa419be --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2eb4ec02.1f2592f8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1876],{3905:(e,t,a)=>{a.d(t,{Zo:()=>b,kt:()=>u});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},b=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,b=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,u=p["".concat(l,".").concat(d)]||p[d]||m[d]||s;return a?r.createElement(u,o(o({ref:t},b),{},{components:a})):r.createElement(u,o({ref:t},b))}));function u(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=a.length,o=new Array(s);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:n,o[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const s={title:"Create base",description:"Learn how to create a base in NocoDB.",tags:["Bases","Create"],keywords:["NocoDB base","create base"]},o=void 0,i={unversionedId:"bases/create-base",id:"bases/create-base",title:"Create base",description:"Learn how to create a base in NocoDB.",source:"@site/docs/040.bases/020.create-base.md",sourceDirName:"040.bases",slug:"/bases/create-base",permalink:"/bases/create-base",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/020.create-base.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Create",permalink:"/tags/create"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create base",description:"Learn how to create a base in NocoDB.",tags:["Bases","Create"],keywords:["NocoDB base","create base"]},sidebar:"tutorialSidebar",previous:{title:"Base overview",permalink:"/bases/base-overview"},next:{title:"Import Airtable to NocoDB",permalink:"/bases/import-base-from-airtable"}},l={},c=[{value:"Create base from scratch",id:"create-base-from-scratch",level:2},{value:"Related articles",id:"related-articles",level:2}],b={toc:c},p="wrapper";function m(e){let{components:t,...s}=e;return(0,n.kt)(p,(0,r.Z)({},b,s,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"create-base-from-scratch"},"Create base from scratch"),(0,n.kt)("p",null,"To initiate the creation of a new database from the ground up, follow these steps:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Navigate to the left sidebar and either select the ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon adjacent to ",(0,n.kt)("inlineCode",{parentName:"li"},"Projects")," or click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"+ New Project")," button."),(0,n.kt)("li",{parentName:"ol"},"Input the desired name for the database within the presented pop-up modal."),(0,n.kt)("li",{parentName:"ol"},"Conclude the process by clicking on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Create Database")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(41502).Z,width:"2880",height:"986"}),"\n",(0,n.kt)("img",{alt:"image",src:a(86542).Z,width:"2876",height:"1272"})),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"Upon the creation of the base, you will assume the role of the ",(0,n.kt)("inlineCode",{parentName:"li"},"base owner.")),(0,n.kt)("li",{parentName:"ul"},"Only the ",(0,n.kt)("inlineCode",{parentName:"li"},"base owner")," possesses the authority to delete a base."),(0,n.kt)("li",{parentName:"ul"},"It is possible to create multiple bases within a single workspace."))),(0,n.kt)("p",null,"On the successful creation of a base, you will be directed to the Base Dashboard, which serves as the primary landing page for the base. This central hub provides users with swift access to essential features such as base settings and collaboration tools. To access the Base Dashboard, simply click on the base name located in the left sidebar."),(0,n.kt)("p",null,"Find more details on adding tables to a base in the ",(0,n.kt)("a",{parentName:"p",href:"/tables/create-table"},"Tables")," section."),(0,n.kt)("h2",{id:"related-articles"},"Related articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}m.isMDXComponent=!0},41502:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-create-1-c677c7eef550784eeafc201d4b92cf24.png"},86542:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-create-2-d26dbc197203d898f5cc7db86df26aea.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/2f81bee2.3ffbdb86.js b/packages/noco-docs/dist/assets/js/2f81bee2.3ffbdb86.js new file mode 100644 index 0000000000..b3446f260b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/2f81bee2.3ffbdb86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9677],{13316:o=>{o.exports=JSON.parse('{"label":"Connect","permalink":"/tags/connect","allTagsPath":"/tags","count":1,"items":[{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","permalink":"/data-sources/connect-to-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/300d0b41.62cb6499.js b/packages/noco-docs/dist/assets/js/300d0b41.62cb6499.js new file mode 100644 index 0000000000..a0740e0f2c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/300d0b41.62cb6499.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2534],{48717:o=>{o.exports=JSON.parse('{"label":"Enable","permalink":"/tags/enable","allTagsPath":"/tags","count":1,"items":[{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","permalink":"/automation/webhook/actions-on-webhook"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/310a23cf.6958a86d.js b/packages/noco-docs/dist/assets/js/310a23cf.6958a86d.js new file mode 100644 index 0000000000..9547e786e0 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/310a23cf.6958a86d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1878],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var l=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function n(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=l.createContext({}),p=function(e){var t=l.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},d=function(e){var t=p(e.components);return l.createElement(o.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},f=l.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,o=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=p(a),f=r,c=u["".concat(o,".").concat(f)]||u[f]||m[f]||i;return a?l.createElement(c,n(n({ref:t},d),{},{components:a})):l.createElement(c,n({ref:t},d))}));function c(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,n=new Array(i);n[0]=f;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[u]="string"==typeof e?e:r,n[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>n,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var l=a(87462),r=(a(67294),a(3905));const i={title:"Fields overview",description:"This article discusses various field types that NocoDB offers.",tags:["Fields","Overview"],keywords:["NocoDB fields","fields overview","field administration","field organization"]},n=void 0,s={unversionedId:"fields/fields-overview",id:"fields/fields-overview",title:"Fields overview",description:"This article discusses various field types that NocoDB offers.",source:"@site/docs/070.fields/010.fields-overview.md",sourceDirName:"070.fields",slug:"/fields/fields-overview",permalink:"/fields/fields-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/010.fields-overview.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Fields overview",description:"This article discusses various field types that NocoDB offers.",tags:["Fields","Overview"],keywords:["NocoDB fields","fields overview","field administration","field organization"]},sidebar:"tutorialSidebar",previous:{title:"Table details overview",permalink:"/table-details/table-details-overview"},next:{title:"Primary key",permalink:"/fields/primary-key"}},o={},p=[{value:"Text based",id:"text-based",level:3},{value:"Numerical",id:"numerical",level:3},{value:"Date and time",id:"date-and-time",level:3},{value:"Select based",id:"select-based",level:3},{value:"Link based",id:"link-based",level:3},{value:"Custom types",id:"custom-types",level:3},{value:"Formula",id:"formula",level:3}],d={toc:p},u="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,l.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"primary-key"},"Primary Key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"display-value"},"Display Value"))),(0,r.kt)("h3",{id:"text-based"},"Text based"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/text-based/single-line-text"},"Single line text")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/text-based/long-text"},"Long text")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/text-based/email"},"Email")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/text-based/phonenumber"},"Phone")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/text-based/url"},"URL"))),(0,r.kt)("h3",{id:"numerical"},"Numerical"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/numerical/number"},"Number")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/numerical/currency"},"Currency")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/numerical/percent"},"Percentage")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/numerical/currency"},"Currency"))),(0,r.kt)("h3",{id:"date-and-time"},"Date and time"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/date-time-based/date"},"Date")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/date-time-based/time"},"Time")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/date-time-based/date-time"},"Date and time")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/date-time-based/duration"},"Duration"))),(0,r.kt)("h3",{id:"select-based"},"Select based"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/select-based/single-select"},"Single select")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/select-based/multi-select"},"Multi select")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/select-based/checkbox"},"Checkbox")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/select-based/rating"},"Rating"))),(0,r.kt)("h3",{id:"link-based"},"Link based"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/links-based/links"},"Links")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/links-based/lookup"},"Lookup")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/links-based/rollup"},"Rollup"))),(0,r.kt)("h3",{id:"custom-types"},"Custom types"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/attachment"},"Attachment")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/barcode"},"Barcode")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/QR-code"},"QR-code")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/geometry"},"Geometry")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/specific-db-type"},"Specific DB type")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/custom-types/json"},"JSON"))),(0,r.kt)("h3",{id:"formula"},"Formula"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/formula"},"Formula"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/operators"},"Operators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/numeric-functions"},"Numeric Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/string-functions"},"String Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/date-functions"},"Date Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"field-types/formula/conditional-expressions"},"Conditional Expressions"))))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/319e5695.606ef121.js b/packages/noco-docs/dist/assets/js/319e5695.606ef121.js new file mode 100644 index 0000000000..277c599b3e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/319e5695.606ef121.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9542],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>w});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),l=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},k="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),k=l(a),d=n,w=k["".concat(c,".").concat(d)]||k[d]||m[d]||o;return a?r.createElement(w,i(i({ref:t},p),{},{components:a})):r.createElement(w,i({ref:t},p))}));function w(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[k]="string"==typeof e?e:n,i[1]=s;for(var l=2;l{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var r=a(87462),n=(a(67294),a(3905));const o={title:"Actions on workspace",description:"This article explains how to rename or delete a workspace.",tags:["Workspaces","Rename","Delete"],keywords:["Workspace configuration","Rename workspace","Delete workspace","Workspace actions","Workspace management","Workspace administration","Workspace settings","Workspace organization"]},i=void 0,s={unversionedId:"workspaces/actions-on-workspace",id:"workspaces/actions-on-workspace",title:"Actions on workspace",description:"This article explains how to rename or delete a workspace.",source:"@site/docs/030.workspaces/040.actions-on-workspace.md",sourceDirName:"030.workspaces",slug:"/workspaces/actions-on-workspace",permalink:"/workspaces/actions-on-workspace",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/030.workspaces/040.actions-on-workspace.md",tags:[{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Rename",permalink:"/tags/rename"},{label:"Delete",permalink:"/tags/delete"}],version:"current",sidebarPosition:40,frontMatter:{title:"Actions on workspace",description:"This article explains how to rename or delete a workspace.",tags:["Workspaces","Rename","Delete"],keywords:["Workspace configuration","Rename workspace","Delete workspace","Workspace actions","Workspace management","Workspace administration","Workspace settings","Workspace organization"]},sidebar:"tutorialSidebar",previous:{title:"Workspace collaboration",permalink:"/workspaces/workspace-collaboration"},next:{title:"Base overview",permalink:"/bases/base-overview"}},c={},l=[{value:"Rename workspace",id:"rename-workspace",level:2},{value:"Delete workspace",id:"delete-workspace",level:2},{value:"Related articles",id:"related-articles",level:2}],p={toc:l},k="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(k,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"rename-workspace"},"Rename workspace"),(0,n.kt)("p",null,"To update the workspace name:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Navigate to the ",(0,n.kt)("inlineCode",{parentName:"li"},"Team & Settings")," option in the left sidebar to access the Workspace configuration page."),(0,n.kt)("li",{parentName:"ol"},"Select the ",(0,n.kt)("inlineCode",{parentName:"li"},"Settings")," tab."),(0,n.kt)("li",{parentName:"ol"},"Enter the new desired workspace name in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Workspace Name")," field."),(0,n.kt)("li",{parentName:"ol"},"Confirm the change by clicking on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Rename Workspace")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(3451).Z,width:"2876",height:"1576"})),(0,n.kt)("h2",{id:"delete-workspace"},"Delete workspace"),(0,n.kt)("p",null,"If you determine that a workspace is no longer necessary, you have the option to permanently remove it from your settings. Deleting a workspace will delete all the bases and data associated with it."),(0,n.kt)("admonition",{type:"danger"},(0,n.kt)("p",{parentName:"admonition"},(0,n.kt)("strong",{parentName:"p"},"This action cannot be undone."))),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Only ",(0,n.kt)("strong",{parentName:"p"},"workspace owner")," can delete a workspace.")),(0,n.kt)("p",null,"To remove a workspace:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the Workspace configuration page by selecting ",(0,n.kt)("inlineCode",{parentName:"li"},"Team & Settings")," from the left sidebar."),(0,n.kt)("li",{parentName:"ol"},"Access the ",(0,n.kt)("inlineCode",{parentName:"li"},"Settings")," tab."),(0,n.kt)("li",{parentName:"ol"},"Click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Delete Workspace")," button."),(0,n.kt)("li",{parentName:"ol"},"Provide the workspace name as confirmation for deletion."),(0,n.kt)("li",{parentName:"ol"},"Confirm the action by clicking the ",(0,n.kt)("inlineCode",{parentName:"li"},"Delete Workspace")," button in the confirmation dialog box.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(29615).Z,width:"2874",height:"1576"}),"\n",(0,n.kt)("img",{alt:"image",src:a(49317).Z,width:"2874",height:"1578"})),(0,n.kt)("h2",{id:"related-articles"},"Related articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/workspaces/workspace-overview"},"Workspace overview")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/workspaces/create-workspace"},"Create workspace")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/workspaces/workspace-collaboration"},"Invite team members to workspace"))))}m.isMDXComponent=!0},49317:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/workspace-delete-confirmation-c694a2202d07bd3c2d2875191402252d.png"},29615:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/workspace-delete-633e807f749c163f2604a8d3f83ba3ab.png"},3451:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/workspace-rename-1a580f4e43ca597cc5b2205fbd9da98a.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/31befc1e.cf53cc0e.js b/packages/noco-docs/dist/assets/js/31befc1e.cf53cc0e.js new file mode 100644 index 0000000000..e3fef740f7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/31befc1e.cf53cc0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6799],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),o=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=o(e.components);return n.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),u=o(a),f=r,k=u["".concat(s,".").concat(f)]||u[f]||m[f]||l;return a?n.createElement(k,i(i({ref:t},p),{},{components:a})):n.createElement(k,i({ref:t},p))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=f;var d={};for(var s in t)hasOwnProperty.call(t,s)&&(d[s]=t[s]);d.originalType=e,d[u]="string"==typeof e?e:r,i[1]=d;for(var o=2;o{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>l,metadata:()=>d,toc:()=>o});var n=a(87462),r=(a(67294),a(3905));const l={title:"Date functions",description:"This article explains various date functions that can be used in formula fields.",tags:["Fields","Field types","Formula","Date & Time"],keywords:["Fields","Field types","Formula","Date & Time","Create formula field","Date functions"]},i=void 0,d={unversionedId:"fields/field-types/formula/date-functions",id:"fields/field-types/formula/date-functions",title:"Date functions",description:"This article explains various date functions that can be used in formula fields.",source:"@site/docs/070.fields/040.field-types/060.formula/040.date-functions.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/date-functions",permalink:"/fields/field-types/formula/date-functions",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/040.date-functions.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"},{label:"Date & Time",permalink:"/tags/date-time"}],version:"current",sidebarPosition:40,frontMatter:{title:"Date functions",description:"This article explains various date functions that can be used in formula fields.",tags:["Fields","Field types","Formula","Date & Time"],keywords:["Fields","Field types","Formula","Date & Time","Create formula field","Date functions"]},sidebar:"tutorialSidebar",previous:{title:"String functions",permalink:"/fields/field-types/formula/string-functions"},next:{title:"Conditional expressions",permalink:"/fields/field-types/formula/conditional-expressions"}},s={},o=[{value:"Related Articles",id:"related-articles",level:2}],p={toc:o},u="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"),(0,r.kt)("th",{parentName:"tr",align:null},"Remark"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"NOW")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NOW()")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NOW()")),(0,r.kt)("td",{parentName:"tr",align:null},"2022-05-19 17:20:43"),(0,r.kt)("td",{parentName:"tr",align:null},"Returns the current time and day")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < {DATE_COL}, "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < date, "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If current date is less than {DATE_COL}, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"DATEADD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATEADD(date \\| datetime, value, ["day" \\| "week" \\| "month" \\| "year"])')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'day')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14. The result is 2022-03-15."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'day')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'week')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-03-21 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'week')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'month')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-04-14 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'month')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'year')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2023-03-14 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'year')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < DATEADD(date,10,\'day\'), "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < DATEADD(date,10,\'day\'), "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime fields and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"DATETIME_DIFF")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATETIME_DIFF(date, date, ["milliseconds" \\| "ms" \\| "seconds" \\| "s" \\| "minutes" \\| "m" \\| "hours" \\| "h" \\| "days" \\| "d" \\| "weeks" \\| "w" \\| "months" \\| "M" \\| "quarters" \\| "Q" \\| "years" \\| "y"])')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATETIME_DIFF("2022/10/14", "2022/10/15", "second")')),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL_1} is 2017-08-25 and {DATE_COL_2} is 2011-08-25. The result is 86400."),(0,r.kt)("td",{parentName:"tr",align:null},"Compares two dates and returns the difference in the unit specified. Positive integers indicate the second date being in the past compared to the first and vice versa for negative ones.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'WEEKDAY(NOW(), "sunday")')),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 1"),(0,r.kt)("td",{parentName:"tr",align:null},"Get the week day of NOW() with the first day set as sunday")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"WEEKDAY")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"WEEKDAY(date, [startDayOfWeek])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"WEEKDAY(NOW())")),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 0"),(0,r.kt)("td",{parentName:"tr",align:null},"Returns the day of the week as an integer between 0 and 6 inclusive starting from Monday by default. You can optionally change the start day of the week by specifying in the second argument")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'WEEKDAY(NOW(), "sunday")')),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 1"),(0,r.kt)("td",{parentName:"tr",align:null},"Get the week day of NOW() with the first day set as sunday")))),(0,r.kt)("h2",{id:"related-articles"},"Related Articles"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/operators"},"Numeric and Logical Operators")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/numeric-functions"},"Numeric Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/string-functions"},"String Functions")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/formula/conditional-expressions"},"Conditional Expressions"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/31f9cd1a.775da14b.js b/packages/noco-docs/dist/assets/js/31f9cd1a.775da14b.js new file mode 100644 index 0000000000..1cb7cf41a9 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/31f9cd1a.775da14b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7130],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var o=n.createContext({}),p=function(e){var t=n.useContext(o),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,l=e.originalType,o=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(r),f=i,m=d["".concat(o,".").concat(f)]||d[f]||u[f]||l;return r?n.createElement(m,a(a({ref:t},s),{},{components:r})):n.createElement(m,a({ref:t},s))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=r.length,a=new Array(l);a[0]=f;var c={};for(var o in t)hasOwnProperty.call(t,o)&&(c[o]=t[o]);c.originalType=e,c[d]="string"==typeof e?e:i,a[1]=c;for(var p=2;p{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>p});var n=r(87462),i=(r(67294),r(3905));const l={title:"Percent",description:"This article explains how to create & work with a Percent field.",tags:["Fields","Field types","Numerical types","Percent"],keywords:["Fields","Field types","Numerical types","Percent","Create percent field"]},a=void 0,c={unversionedId:"fields/field-types/numerical/percent",id:"fields/field-types/numerical/percent",title:"Percent",description:"This article explains how to create & work with a Percent field.",source:"@site/docs/070.fields/040.field-types/020.numerical/030.percent.md",sourceDirName:"070.fields/040.field-types/020.numerical",slug:"/fields/field-types/numerical/percent",permalink:"/fields/field-types/numerical/percent",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/020.numerical/030.percent.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Numerical types",permalink:"/tags/numerical-types"},{label:"Percent",permalink:"/tags/percent"}],version:"current",sidebarPosition:30,frontMatter:{title:"Percent",description:"This article explains how to create & work with a Percent field.",tags:["Fields","Field types","Numerical types","Percent"],keywords:["Fields","Field types","Numerical types","Percent","Create percent field"]},sidebar:"tutorialSidebar",previous:{title:"Decimal",permalink:"/fields/field-types/numerical/decimal"},next:{title:"Currency",permalink:"/fields/field-types/numerical/currency"}},o={},p=[{value:"Create a percent field",id:"create-a-percent-field",level:2},{value:"Similar numerical fields",id:"similar-numerical-fields",level:2}],s={toc:p},d="wrapper";function u(e){let{components:t,...l}=e;return(0,i.kt)(d,(0,n.Z)({},s,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Percent")," field type is used to store percentage values. Use cases include storing ",(0,i.kt)("inlineCode",{parentName:"p"},"discount"),", ",(0,i.kt)("inlineCode",{parentName:"p"},"tax"),", etc."),(0,i.kt)("h2",{id:"create-a-percent-field"},"Create a percent field"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,i.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,i.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Select the field type as ",(0,i.kt)("inlineCode",{parentName:"li"},"Percent")," from the dropdown."),(0,i.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:r(48074).Z,width:"2878",height:"1436"})),(0,i.kt)("h2",{id:"similar-numerical-fields"},"Similar numerical fields"),(0,i.kt)("p",null,"Following are the other numerical fields available in NocoDB, with some custom add-on features."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/number"},"Number")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/decimal"},"Decimal")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/currency"},"Currency"))))}u.isMDXComponent=!0},48074:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/percent-23592b0cefe5dd1b57f2659a5d8859b0.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/324eab63.279737a1.js b/packages/noco-docs/dist/assets/js/324eab63.279737a1.js new file mode 100644 index 0000000000..df3c1340e7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/324eab63.279737a1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2642],{59555:e=>{e.exports=JSON.parse('{"label":"Record Height","permalink":"/tags/record-height","allTagsPath":"/tags","count":2,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"table-operations/row-height","title":"Record height","description":"Learn how to adjust the height of records in NocoDB.","permalink":"/table-operations/row-height"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/32e0f401.c4f99129.js b/packages/noco-docs/dist/assets/js/32e0f401.c4f99129.js new file mode 100644 index 0000000000..58a7b55c6c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/32e0f401.c4f99129.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9789],{3905:(e,t,a)=>{a.d(t,{Zo:()=>b,kt:()=>u});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},b=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,b=i(e,["components","mdxType","originalType","parentName"]),p=s(a),d=n,u=p["".concat(c,".").concat(d)]||p[d]||m[d]||l;return a?r.createElement(u,o(o({ref:t},b),{},{components:a})):r.createElement(u,o({ref:t},b))}));function u(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[p]="string"==typeof e?e:n,o[1]=i;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>l,metadata:()=>i,toc:()=>s});var r=a(87462),n=(a(67294),a(3905));const l={title:"Create empty table",description:"Learn how to create a table in NocoDB.",tags:["Tables","Create"],keywords:["NocoDB table","create table"]},o=void 0,i={unversionedId:"tables/create-table",id:"tables/create-table",title:"Create empty table",description:"Learn how to create a table in NocoDB.",source:"@site/docs/050.tables/020.create-table.md",sourceDirName:"050.tables",slug:"/tables/create-table",permalink:"/tables/create-table",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/050.tables/020.create-table.md",tags:[{label:"Tables",permalink:"/tags/tables"},{label:"Create",permalink:"/tags/create"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create empty table",description:"Learn how to create a table in NocoDB.",tags:["Tables","Create"],keywords:["NocoDB table","create table"]},sidebar:"tutorialSidebar",previous:{title:"Table overview",permalink:"/tables/table-overview"},next:{title:"Create table via import",permalink:"/tables/create-table-via-import"}},c={},s=[{value:"Create new table",id:"create-new-table",level:2},{value:"Related articles",id:"related-articles",level:3}],b={toc:s},p="wrapper";function m(e){let{components:t,...l}=e;return(0,n.kt)(p,(0,r.Z)({},b,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"create-new-table"},"Create new table"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," on the left sidebar next to ",(0,n.kt)("inlineCode",{parentName:"li"},"base name")," OR click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+ New Table")," button on the Base dashboard."),(0,n.kt)("li",{parentName:"ol"},"Fill table name in the pop-up modal."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Create Table")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(62095).Z,width:"2878",height:"1410"}),"\n",(0,n.kt)("img",{alt:"image",src:a(94741).Z,width:"2874",height:"1414"})),(0,n.kt)("h3",{id:"related-articles"},"Related articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/create-table-via-import"},"Create a table using a CSV, Excel or a JSON")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/import-data-into-existing-table"},"Import data from Csv/Xlsx into existing table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#rename-table"},"Rename a table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#duplicate-table"},"Duplicate a table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#delete-table"},"Delete a table"))))}m.isMDXComponent=!0},62095:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/table-create-1-fcda48e93a1dad00916e3586cf48ceff.png"},94741:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/table-create-2-146586847c4f16d9d1eba96debf53bce.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/34b71ab6.001a0e94.js b/packages/noco-docs/dist/assets/js/34b71ab6.001a0e94.js new file mode 100644 index 0000000000..5955f4987f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/34b71ab6.001a0e94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4364],{3905:(t,a,e)=>{e.d(a,{Zo:()=>k,kt:()=>g});var n=e(67294);function l(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function r(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,n)}return e}function i(t){for(var a=1;a=0||(l[e]=t[e]);return l}(t,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(l[e]=t[e])}return l}var m=n.createContext({}),d=function(t){var a=n.useContext(m),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},k=function(t){var a=d(t.components);return n.createElement(m.Provider,{value:a},t.children)},u="mdxType",N={inlineCode:"code",wrapper:function(t){var a=t.children;return n.createElement(n.Fragment,{},a)}},o=n.forwardRef((function(t,a){var e=t.components,l=t.mdxType,r=t.originalType,m=t.parentName,k=p(t,["components","mdxType","originalType","parentName"]),u=d(e),o=l,g=u["".concat(m,".").concat(o)]||u[o]||N[o]||r;return e?n.createElement(g,i(i({ref:a},k),{},{components:e})):n.createElement(g,i({ref:a},k))}));function g(t,a){var e=arguments,l=a&&a.mdxType;if("string"==typeof t||l){var r=e.length,i=new Array(r);i[0]=o;var p={};for(var m in a)hasOwnProperty.call(a,m)&&(p[m]=a[m]);p.originalType=t,p[u]="string"==typeof t?t:l,i[1]=p;for(var d=2;d{e.r(a),e.d(a,{assets:()=>m,contentTitle:()=>i,default:()=>N,frontMatter:()=>r,metadata:()=>p,toc:()=>d});var n=e(87462),l=(e(67294),e(3905));const r={title:"Column Types",description:"NocoDB Column Types Overview"},i=void 0,p={unversionedId:"setup-and-usages/column-types",id:"version-0.109.7/setup-and-usages/column-types",title:"Column Types",description:"NocoDB Column Types Overview",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/040.column-types.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/column-types",permalink:"/0.109.7/setup-and-usages/column-types",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/040.column-types.md",tags:[],version:"0.109.7",sidebarPosition:40,frontMatter:{title:"Column Types",description:"NocoDB Column Types Overview"},sidebar:"tutorialSidebar",previous:{title:"Column Operations",permalink:"/0.109.7/setup-and-usages/column-operations"},next:{title:"Code Snippets",permalink:"/0.109.7/setup-and-usages/code-snippets"}},m={},d=[{value:"Available Column Types",id:"available-column-types",level:2},{value:"Database Types",id:"database-types",level:2},{value:"LinkToAnotherRecord",id:"linktoanotherrecord",level:3},{value:"SingleLineText",id:"singlelinetext",level:3},{value:"Available Database Types",id:"available-database-types",level:4},{value:"LongText",id:"longtext",level:3},{value:"Available Database Types",id:"available-database-types-1",level:4},{value:"Attachment",id:"attachment",level:3},{value:"Available Database Types",id:"available-database-types-2",level:4},{value:"Checkbox",id:"checkbox",level:3},{value:"Available Database Types",id:"available-database-types-3",level:4},{value:"MultiSelect",id:"multiselect",level:3},{value:"Available Database Types",id:"available-database-types-4",level:4},{value:"SingleSelect",id:"singleselect",level:3},{value:"Available Database Types",id:"available-database-types-5",level:4},{value:"Date",id:"date",level:3},{value:"Available Database Types",id:"available-database-types-6",level:4},{value:"Year",id:"year",level:3},{value:"Available Database Types",id:"available-database-types-7",level:4},{value:"Time",id:"time",level:3},{value:"Available Database Types",id:"available-database-types-8",level:4},{value:"PhoneNumber",id:"phonenumber",level:3},{value:"Available Database Types",id:"available-database-types-9",level:4},{value:"Email",id:"email",level:3},{value:"Available Database Types",id:"available-database-types-10",level:4},{value:"URL",id:"url",level:3},{value:"Available Database Types",id:"available-database-types-11",level:4},{value:"Number",id:"number",level:3},{value:"Available Database Types",id:"available-database-types-12",level:4},{value:"Decimal",id:"decimal",level:3},{value:"Available Database Types",id:"available-database-types-13",level:4},{value:"Currency",id:"currency",level:3},{value:"Available Database Types",id:"available-database-types-14",level:4},{value:"Percent",id:"percent",level:3},{value:"Available Database Types",id:"available-database-types-15",level:4},{value:"Duration",id:"duration",level:3},{value:"Available Database Types",id:"available-database-types-16",level:4},{value:"Rating",id:"rating",level:3},{value:"Available Database Types",id:"available-database-types-17",level:4},{value:"Formula",id:"formula",level:3},{value:"QR-Code",id:"qr-code",level:3},{value:"Barcode",id:"barcode",level:3},{value:"Rollup",id:"rollup",level:3},{value:"DateTime",id:"datetime",level:3},{value:"Available Database Types",id:"available-database-types-18",level:4},{value:"Geometry",id:"geometry",level:3},{value:"Available Database Types",id:"available-database-types-19",level:4},{value:"GeoData",id:"geodata",level:3},{value:"Available Database Types",id:"available-database-types-20",level:4},{value:"JSON",id:"json",level:3},{value:"Available Database Types",id:"available-database-types-21",level:4},{value:"SpecificDBType",id:"specificdbtype",level:3},{value:"Available Database Types",id:"available-database-types-22",level:4}],k={toc:d},u="wrapper";function N(t){let{components:a,...e}=t;return(0,l.kt)(u,(0,n.Z)({},k,e,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"available-column-types"},"Available Column Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Type"),(0,l.kt)("th",{parentName:"tr",align:null},"Description"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#linktoanotherrecord"},"LinkToAnotherRecord")),(0,l.kt)("td",{parentName:"tr",align:null},"Has Many or Many To Many columns")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#singlelinetext"},"SingleLineText")),(0,l.kt)("td",{parentName:"tr",align:null},"For short text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#longtext"},"LongText")),(0,l.kt)("td",{parentName:"tr",align:null},"For lengthy string content")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#attachment"},"Attachment")),(0,l.kt)("td",{parentName:"tr",align:null},"File attachment column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#checkbox"},"Checkbox")),(0,l.kt)("td",{parentName:"tr",align:null},"Boolean value")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#multiselect"},"MultiSelect")),(0,l.kt)("td",{parentName:"tr",align:null},"Multiple options can be selected once")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#singleselect"},"SingleSelect")),(0,l.kt)("td",{parentName:"tr",align:null},"Single option select")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#date"},"Date")),(0,l.kt)("td",{parentName:"tr",align:null},"Date selector")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#year"},"Year")),(0,l.kt)("td",{parentName:"tr",align:null},"Year selector")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#time"},"Time")),(0,l.kt)("td",{parentName:"tr",align:null},"Time selector")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#phonenumber"},"PhoneNumber")),(0,l.kt)("td",{parentName:"tr",align:null},"Phone number field")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#email"},"Email")),(0,l.kt)("td",{parentName:"tr",align:null},"Email field")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#url"},"URL")),(0,l.kt)("td",{parentName:"tr",align:null},"Valid URL field")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#number"},"Number")),(0,l.kt)("td",{parentName:"tr",align:null},"Any type of number")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#decimal"},"Decimal")),(0,l.kt)("td",{parentName:"tr",align:null},"Fractional number")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#currency"},"Currency")),(0,l.kt)("td",{parentName:"tr",align:null},"Currency value")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#percent"},"Percent")),(0,l.kt)("td",{parentName:"tr",align:null},"Percentage")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#duration"},"Duration")),(0,l.kt)("td",{parentName:"tr",align:null},"Duration")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#rating"},"Rating")),(0,l.kt)("td",{parentName:"tr",align:null},"Rating")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#formula"},"Formula")),(0,l.kt)("td",{parentName:"tr",align:null},"Formula based generated column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#rollup"},"Rollup")),(0,l.kt)("td",{parentName:"tr",align:null},"Performs calculations and aggregations")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#datetime"},"DateTime")),(0,l.kt)("td",{parentName:"tr",align:null},"Date & Time selector")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#qr-code"},"QR Code")),(0,l.kt)("td",{parentName:"tr",align:null},"QR Code visualization of another referenced column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#barcode"},"Barcode")),(0,l.kt)("td",{parentName:"tr",align:null},"Barcode visualization of another referenced column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#geometry"},"Geometry")),(0,l.kt)("td",{parentName:"tr",align:null},"Geometry column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#geodata"},"GeoData")),(0,l.kt)("td",{parentName:"tr",align:null},"GeoData column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#json"},"Json")),(0,l.kt)("td",{parentName:"tr",align:null},"Json column")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#specificdbtype"},"SpecificDBType")),(0,l.kt)("td",{parentName:"tr",align:null},"Custom DB type option")))),(0,l.kt)("h2",{id:"database-types"},"Database Types"),(0,l.kt)("h3",{id:"linktoanotherrecord"},"LinkToAnotherRecord"),(0,l.kt)("p",null,"For more about Link To Another Record, please visit ",(0,l.kt)("a",{href:"/0.109.7/setup-and-usages/link-to-another-record",target:"_blank"},"here"),"."),(0,l.kt)("h3",{id:"singlelinetext"},"SingleLineText"),(0,l.kt)("h4",{id:"available-database-types"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, varchar, nchar, text, tinytext, mediumtext, longtext"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, character, character varying, text"),(0,l.kt)("td",{parentName:"tr",align:null},"character varying")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"char, ntext, text, varchar, nvarchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"character, text, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")))),(0,l.kt)("h3",{id:"longtext"},"LongText"),(0,l.kt)("h4",{id:"available-database-types-1"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, varchar, nchar, text, tinytext, mediumtext, longtext"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, character, character varying, text"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"char, ntext, text, varchar, nvarchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"character, text, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"attachment"},"Attachment"),(0,l.kt)("h4",{id:"available-database-types-2"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"json, char, varchar, nchar, text, tinytext, mediumtext, longtext"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"json, char, character, character varying, text"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"char, ntext, text, varchar, nvarchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"character, text, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"checkbox"},"Checkbox"),(0,l.kt)("h4",{id:"available-database-types-3"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, smallint, mediumint, bigint, bit, boolean, serial, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"tinyint")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"bit, bool, int2, int4, int8, boolean, smallint, int, integer, bigint, bigserial, char, int4range, int8range, serial, serial2, serial8"),(0,l.kt)("td",{parentName:"tr",align:null},"bool")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"bigint, bit, int, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"tinyint")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, tinyint, smallint, mediumint, bigint, int2, int8, boolean"),(0,l.kt)("td",{parentName:"tr",align:null})))),(0,l.kt)("h3",{id:"multiselect"},"MultiSelect"),(0,l.kt)("h4",{id:"available-database-types-4"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"set, text, tinytext, mediumtext, longtext"),(0,l.kt)("td",{parentName:"tr",align:null},"set")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"text"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"text, ntext"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"text, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"singleselect"},"SingleSelect"),(0,l.kt)("h4",{id:"available-database-types-5"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"enum, text, tinytext, mediumtext, longtext"),(0,l.kt)("td",{parentName:"tr",align:null},"enum")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"text"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"text, ntext"),(0,l.kt)("td",{parentName:"tr",align:null},"text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"text, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"date"},"Date"),(0,l.kt)("h4",{id:"available-database-types-6"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"date, datetime, timestamp, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null}),(0,l.kt)("td",{parentName:"tr",align:null},"date, timestamp, timestamp without time zone, timestamptz, timestamp with time zone")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"date"),(0,l.kt)("td",{parentName:"tr",align:null},"date")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"date, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")))),(0,l.kt)("h3",{id:"year"},"Year"),(0,l.kt)("h4",{id:"available-database-types-7"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"year"),(0,l.kt)("td",{parentName:"tr",align:null},"year")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, tinyint, smallint, mediumint, bigint, int2, int8"),(0,l.kt)("td",{parentName:"tr",align:null},"year")))),(0,l.kt)("h3",{id:"time"},"Time"),(0,l.kt)("h4",{id:"available-database-types-8"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"time"),(0,l.kt)("td",{parentName:"tr",align:null},"time")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"time, time without time zone, timestamp, timestamp without time zone, timestamptz, timestamp with time zone, timetz, time with time zone"),(0,l.kt)("td",{parentName:"tr",align:null},"time")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"time"),(0,l.kt)("td",{parentName:"tr",align:null},"time")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, tinyint, smallint, mediumint, bigint, int2, int8"),(0,l.kt)("td",{parentName:"tr",align:null},"time")))),(0,l.kt)("h3",{id:"phonenumber"},"PhoneNumber"),(0,l.kt)("h4",{id:"available-database-types-9"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"character varying"),(0,l.kt)("td",{parentName:"tr",align:null},"character varying")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar, text"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")))),(0,l.kt)("h3",{id:"email"},"Email"),(0,l.kt)("h4",{id:"available-database-types-10"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"character varying"),(0,l.kt)("td",{parentName:"tr",align:null},"character varying")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar, text"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")))),(0,l.kt)("h3",{id:"url"},"URL"),(0,l.kt)("h4",{id:"available-database-types-11"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"text, tinytext, mediumtext, longtext, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"character varying, text"),(0,l.kt)("td",{parentName:"tr",align:null},"character varying")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar, text"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"varchar, text"),(0,l.kt)("td",{parentName:"tr",align:null},"varchar")))),(0,l.kt)("h3",{id:"number"},"Number"),(0,l.kt)("h4",{id:"available-database-types-12"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, smallint, mediumint, bigint, bit, float, decimal, double, serial"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserial"),(0,l.kt)("td",{parentName:"tr",align:null},"int8")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int, bigint, bit, decimal, float, numeric, real, smallint, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric, real, double, double precision, float"),(0,l.kt)("td",{parentName:"tr",align:null},"integer")))),(0,l.kt)("h3",{id:"decimal"},"Decimal"),(0,l.kt)("h4",{id:"available-database-types-13"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"float, decimal, double, serial"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"double precision,float4,float8"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"real, double, double precision, float, numericdecimal"),(0,l.kt)("td",{parentName:"tr",align:null})))),(0,l.kt)("h3",{id:"currency"},"Currency"),(0,l.kt)("h4",{id:"available-database-types-14"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, money', 'float4, float8"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int, bigint, bit, decimal, float, numeric, real, smallint, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"decimal")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric"),(0,l.kt)("td",{parentName:"tr",align:null},"double precision")))),(0,l.kt)("h3",{id:"percent"},"Percent"),(0,l.kt)("h4",{id:"available-database-types-15"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit"),(0,l.kt)("td",{parentName:"tr",align:null},"double")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserial"),(0,l.kt)("td",{parentName:"tr",align:null},"double")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int, bigint, bit, decimal, float, numeric, real, smallint, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"double")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric"),(0,l.kt)("td",{parentName:"tr",align:null},"double")))),(0,l.kt)("h3",{id:"duration"},"Duration"),(0,l.kt)("h4",{id:"available-database-types-16"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserial"),(0,l.kt)("td",{parentName:"tr",align:null},"int8")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int, bigint, bit, decimal, float, numeric, real, smallint, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"int")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, tinyint, smallint, mediumint, bigint, int2, int8"),(0,l.kt)("td",{parentName:"tr",align:null},"integer")))),(0,l.kt)("h3",{id:"rating"},"Rating"),(0,l.kt)("h4",{id:"available-database-types-17"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit"),(0,l.kt)("td",{parentName:"tr",align:null},"float")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"int, integer, bigint, bigserial, int2, int4, int8, serial, serial2, serial8, double precision, float4, float8, smallint, smallserial"),(0,l.kt)("td",{parentName:"tr",align:null},"float8")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"int, bigint, bit, decimal, float, numeric, real, smallint, tinyint"),(0,l.kt)("td",{parentName:"tr",align:null},"float")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric"),(0,l.kt)("td",{parentName:"tr",align:null},"float")))),(0,l.kt)("h3",{id:"formula"},"Formula"),(0,l.kt)("p",null,"For more about Formulas, please visit ",(0,l.kt)("a",{href:"/0.109.7/setup-and-usages/formulas",target:"_blank"},"here"),"."),(0,l.kt)("h3",{id:"qr-code"},"QR-Code"),(0,l.kt)("p",null,"Encodes the value of a reference column as QR code. The following column types are supported for the for reference column: "),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Formula"),(0,l.kt)("li",{parentName:"ul"},"Single Line Text"),(0,l.kt)("li",{parentName:"ul"},"Long Text"),(0,l.kt)("li",{parentName:"ul"},"Phone Number"),(0,l.kt)("li",{parentName:"ul"},"URL "),(0,l.kt)("li",{parentName:"ul"},"Email")),(0,l.kt)("p",null,"Since it's a virtual column, the cell content (QR code) cannot be changed directly. "),(0,l.kt)("h3",{id:"barcode"},"Barcode"),(0,l.kt)("p",null,"Encodes the value of a reference column as Barcode. Supported barcode formats: CODE128, EAN, EAN-13, EAN-8, EAN-5, EAN-2, UPC (A), CODE39, ITF-14, MSI, Pharmacode, Codabar. The following column types are supported for the for reference column: "),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Formula"),(0,l.kt)("li",{parentName:"ul"},"Single Line Text"),(0,l.kt)("li",{parentName:"ul"},"Long Text"),(0,l.kt)("li",{parentName:"ul"},"Phone Number"),(0,l.kt)("li",{parentName:"ul"},"URL "),(0,l.kt)("li",{parentName:"ul"},"Email")),(0,l.kt)("p",null,"Since it's a virtual column, the cell content (Barcode) cannot be changed directly."),(0,l.kt)("h3",{id:"rollup"},"Rollup"),(0,l.kt)("p",null,"For more about Rollup, please visit ",(0,l.kt)("a",{href:"/0.109.7/setup-and-usages/rollup",target:"_blank"},"here"),"."),(0,l.kt)("h3",{id:"datetime"},"DateTime"),(0,l.kt)("h4",{id:"available-database-types-18"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"),(0,l.kt)("th",{parentName:"tr",align:null},"Default Type"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"datetime, timestamp, varchar"),(0,l.kt)("td",{parentName:"tr",align:null},"datetime")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"timestamp, timestamp without time zone, timestamptz, timestamp with time zone"),(0,l.kt)("td",{parentName:"tr",align:null},"datetime")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"datetime, datetime2, datetimeoffset"),(0,l.kt)("td",{parentName:"tr",align:null},"datetime")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"datetime, timestamp"),(0,l.kt)("td",{parentName:"tr",align:null},"datetime")))),(0,l.kt)("h3",{id:"geometry"},"Geometry"),(0,l.kt)("h4",{id:"available-database-types-19"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"polygon, point, circle, box, line, lseg, path, circle")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"geometry")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"geodata"},"GeoData"),(0,l.kt)("p",null,"Encodes a geographic location which consists of a latitude and a longitude.\nBoth are internally stored as one string, where latitude and longitude are separated by ';'\nExample: \"52.2134;29.1442\""),(0,l.kt)("h4",{id:"available-database-types-20"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, varchar, nchar, text, tinytext, mediumtext, longtext")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"char, character, character varying, text")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"decimal, float")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"character, text, varchar")))),(0,l.kt)("h3",{id:"json"},"JSON"),(0,l.kt)("h4",{id:"available-database-types-21"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},"json")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},"json")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},"text, ntext")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},"text")))),(0,l.kt)("h3",{id:"specificdbtype"},"SpecificDBType"),(0,l.kt)("h4",{id:"available-database-types-22"},"Available Database Types"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Database"),(0,l.kt)("th",{parentName:"tr",align:null},"Types"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"MySQL")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("em",{parentName:"td"},"All types are available"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"PostgreSQL")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("em",{parentName:"td"},"All types are available"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQL Server")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("em",{parentName:"td"},"All types are available"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"SQLite")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("em",{parentName:"td"},"All types are available"))))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/35af5afe.be900cd3.js b/packages/noco-docs/dist/assets/js/35af5afe.be900cd3.js new file mode 100644 index 0000000000..140949cc27 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/35af5afe.be900cd3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1179],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>m});var l=i(67294);function o(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function n(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function a(e){for(var t=1;t=0||(o[i]=e[i]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(o[i]=e[i])}return o}var s=l.createContext({}),d=function(e){var t=l.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},c=function(e){var t=d(e.components);return l.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},f=l.forwardRef((function(e,t){var i=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),p=d(i),f=o,m=p["".concat(s,".").concat(f)]||p[f]||u[f]||n;return i?l.createElement(m,a(a({ref:t},c),{},{components:i})):l.createElement(m,a({ref:t},c))}));function m(e,t){var i=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=i.length,a=new Array(n);a[0]=f;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[p]="string"==typeof e?e:o,a[1]=r;for(var d=2;d{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>n,metadata:()=>r,toc:()=>d});var l=i(87462),o=(i(67294),i(3905));const n={title:"Multi Select",description:"This article explains how to create & work with a Multi select field.",tags:["Fields","Field types","Select based types","Multi select"],keywords:["Fields","Field types","Select based types","Multi select","Create multi select field"]},a=void 0,r={unversionedId:"fields/field-types/select-based/multi-select",id:"fields/field-types/select-based/multi-select",title:"Multi Select",description:"This article explains how to create & work with a Multi select field.",source:"@site/docs/070.fields/040.field-types/030.select-based/020.multi-select.md",sourceDirName:"070.fields/040.field-types/030.select-based",slug:"/fields/field-types/select-based/multi-select",permalink:"/fields/field-types/select-based/multi-select",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/030.select-based/020.multi-select.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Select based types",permalink:"/tags/select-based-types"},{label:"Multi select",permalink:"/tags/multi-select"}],version:"current",sidebarPosition:20,frontMatter:{title:"Multi Select",description:"This article explains how to create & work with a Multi select field.",tags:["Fields","Field types","Select based types","Multi select"],keywords:["Fields","Field types","Select based types","Multi select","Create multi select field"]},sidebar:"tutorialSidebar",previous:{title:"Checkbox",permalink:"/fields/field-types/select-based/checkbox"},next:{title:"Rating",permalink:"/fields/field-types/select-based/rating"}},s={},d=[{value:"Create a multi select field",id:"create-a-multi-select-field",level:2},{value:"Configure color for options",id:"configure-color-for-options",level:3},{value:"Re-order options",id:"re-order-options",level:3},{value:"Edit options",id:"edit-options",level:3},{value:"Delete options",id:"delete-options",level:3},{value:"Similar select based fields",id:"similar-select-based-fields",level:2}],c={toc:d},p="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,l.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Multi Select")," fields allow you to select multiple options from a list of options. The options can be defined in the field configuration."),(0,o.kt)("h2",{id:"create-a-multi-select-field"},"Create a multi select field"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,o.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,o.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select the field type as ",(0,o.kt)("inlineCode",{parentName:"li"},"MultiSelect")," from the dropdown."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Add option")," button to add options."),(0,o.kt)("li",{parentName:"ol"},"Set default value for the field. The options are populated in the dropdown. Since its multi select, you can select multiple options as default value (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:i(33646).Z,width:"2874",height:"1554"})),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"Use of ",(0,o.kt)("inlineCode",{parentName:"p"},",")," is not allowed for option values.")),(0,o.kt)("h3",{id:"configure-color-for-options"},"Configure color for options"),(0,o.kt)("p",null,"You can re-configure background color for each option. This is useful when you want to highlight certain options. For example, you can configure ",(0,o.kt)("inlineCode",{parentName:"p"},"High")," option to have ",(0,o.kt)("inlineCode",{parentName:"p"},"red")," background color.\nTo configure, click on the ",(0,o.kt)("inlineCode",{parentName:"p"},"color")," icon next to the option. Select the color from the color picker and click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:i(71343).Z,width:"2876",height:"1506"})),(0,o.kt)("h3",{id:"re-order-options"},"Re-order options"),(0,o.kt)("p",null,"You can re-order options by dragging and dropping the options. To re-order, click on the ",(0,o.kt)("inlineCode",{parentName:"p"},"drag")," icon next to the option and drag it to the desired position. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the order."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:i(3176).Z,width:"2874",height:"1554"})),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The order defined for the options will be used in cells dropdown as well.")),(0,o.kt)("h3",{id:"edit-options"},"Edit options"),(0,o.kt)("p",null,"You can rename options by clicking on the associated option text box. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the changes."),(0,o.kt)("h3",{id:"delete-options"},"Delete options"),(0,o.kt)("p",null,"You can delete options by clicking on the ",(0,o.kt)("inlineCode",{parentName:"p"},"x")," icon next to the option. You can undo the delete by clicking on the ",(0,o.kt)("inlineCode",{parentName:"p"},"undo")," icon next to the option. Click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Save Field")," button to save the changes."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},"On removing an option, the option value will be removed from all the cells."),(0,o.kt)("li",{parentName:"ul"},"If the option value is set as default value for the field, then the default value will be removed."))),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:i(54381).Z,width:"2878",height:"1550"})),(0,o.kt)("h2",{id:"similar-select-based-fields"},"Similar select based fields"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/fields/field-types/select-based/single-select"},"Single select"))))}u.isMDXComponent=!0},33646:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/multiselect-d61aaaf3d7f5175b899af60f0ecd6225.png"},71343:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/options-change-colour-08270506854710a13f2945a006fd3779.png"},54381:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/options-remove-9e5b6dcf0682be419ac34c21db0b5716.png"},3176:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/options-reorder-1ee3cf6240593e4055bd781a0c116949.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3615d78a.3807e0ad.js b/packages/noco-docs/dist/assets/js/3615d78a.3807e0ad.js new file mode 100644 index 0000000000..4fe3b64ed3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3615d78a.3807e0ad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3590],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},c="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=d(a),m=l,h=c["".concat(s,".").concat(m)]||c[m]||p[m]||i;return a?n.createElement(h,o(o({ref:t},u),{},{components:a})):n.createElement(h,o({ref:t},u))}));function h(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,o=new Array(i);o[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[c]="string"==typeof e?e:l,o[1]=r;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var n=a(87462),l=(a(67294),a(3905));const i={title:"Releases & Builds",description:"NocoDB creates Docker and Binaries for each PR"},o=void 0,r={unversionedId:"engineering/builds-and-releases",id:"version-0.109.7/engineering/builds-and-releases",title:"Releases & Builds",description:"NocoDB creates Docker and Binaries for each PR",source:"@site/versioned_docs/version-0.109.7/050.engineering/060.builds-and-releases.md",sourceDirName:"050.engineering",slug:"/engineering/builds-and-releases",permalink:"/0.109.7/engineering/builds-and-releases",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/060.builds-and-releases.md",tags:[],version:"0.109.7",sidebarPosition:60,frontMatter:{title:"Releases & Builds",description:"NocoDB creates Docker and Binaries for each PR"},sidebar:"tutorialSidebar",previous:{title:"Playwright E2E Testing",permalink:"/0.109.7/engineering/playwright"},next:{title:"i18n translation",permalink:"/0.109.7/engineering/translation"}},s={},d=[{value:"Builds of NocoDB",id:"builds-of-nocodb",level:2},{value:"Release builds",id:"release-builds",level:2},{value:"How to make a release build ?",id:"how-to-make-a-release-build--",level:3},{value:"Tagging",id:"tagging",level:3},{value:"Case 1: Leaving inputs blank",id:"case-1-leaving-inputs-blank",level:3},{value:"Case 2: Manually Input",id:"case-2-manually-input",level:3},{value:"How does release action work ?",id:"how-does-release-action-work-",level:3},{value:"validate-branch",id:"validate-branch",level:4},{value:"process-input",id:"process-input",level:4},{value:"pr-to-master",id:"pr-to-master",level:4},{value:"release-npm",id:"release-npm",level:4},{value:"release-draft-note",id:"release-draft-note",level:4},{value:"release-docker",id:"release-docker",level:4},{value:"close-issues",id:"close-issues",level:4},{value:"publish-docs",id:"publish-docs",level:4},{value:"update-sdk-path",id:"update-sdk-path",level:4},{value:"sync-to-develop",id:"sync-to-develop",level:4},{value:"Daily builds",id:"daily-builds",level:2},{value:"What are daily builds ?",id:"what-are-daily-builds-",level:3},{value:"Docker images",id:"docker-images",level:3},{value:"Timely builds",id:"timely-builds",level:2},{value:"What are timely builds ?",id:"what-are-timely-builds-",level:3},{value:"Docker images",id:"docker-images-1",level:3},{value:"Executables or Binaries",id:"executables-or-binaries",level:2}],u={toc:d},c="wrapper";function p(e){let{components:t,...a}=e;return(0,l.kt)(c,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"builds-of-nocodb"},"Builds of NocoDB"),(0,l.kt)("p",null,"There are 3 kinds of docker builds in NocoDB"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Release builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb"},"nocodb/nocodb")," : built during NocoDB release. "),(0,l.kt)("li",{parentName:"ul"},"Daily builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-daily"},"nocodb/nocodb-daily")," : built every 6 hours from Develop branch."),(0,l.kt)("li",{parentName:"ul"},"Timely builds ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-timely"},"nocodb/nocodb-timely"),": built for every PR and manually triggered PRs.")),(0,l.kt)("p",null,"Below is an overview of how to make these builds and what happens behind the scenes."),(0,l.kt)("h2",{id:"release-builds"},"Release builds"),(0,l.kt)("h3",{id:"how-to-make-a-release-build--"},"How to make a release build ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Click ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/actions/workflows/release-nocodb.yml"},"NocoDB release action"))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"You should see the below screen"),(0,l.kt)("p",{parentName:"li"},(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167240353-a02f690f-c865-4ade-8645-64382405c9ea.png",alt:"image"}))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Change ",(0,l.kt)("inlineCode",{parentName:"p"},"Use workflow from")," to ",(0,l.kt)("inlineCode",{parentName:"p"},"Branch: master"),". If you choose the wrong branch, the workflow will be ended."),(0,l.kt)("p",{parentName:"li"},(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167240383-dda05f76-8323-4f4a-b3e7-9db886dbd68d.png",alt:"image"}))),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Then there would be two cases - you can either leave target tag and pervious tag blank or manually input some values")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Target Tag means the target deployment version, while Previous Tag means the latest version as of now. Previous Tag is used for Release Note only - showing the file / commit differences between two tags."))),(0,l.kt)("h3",{id:"tagging"},"Tagging"),(0,l.kt)("p",null,"The naming convention would be following given the actual release tag is ",(0,l.kt)("inlineCode",{parentName:"p"},"0.100.0")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.0")," (first version of pre-release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.1")," (include bug fix changes on top of the previous version)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0-beta.2"),"(include bug fix changes on top of the previous version)"),(0,l.kt)("li",{parentName:"ul"},"and so on ..."),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.0")," (actual release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.1")," (minor bug fix release)"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"0.100.2")," (minor bug fix release)")),(0,l.kt)("h3",{id:"case-1-leaving-inputs-blank"},"Case 1: Leaving inputs blank"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"If Previous Tag is blank, then the value will be fetched from ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/latest"},"latest")),(0,l.kt)("li",{parentName:"ul"},"If Target Tag is blank, then the value will be Previous Tag plus one. Example: 0.90.11 (Previous Tag) + 0.0.1 = 0.90.12 (Target Tag)")),(0,l.kt)("h3",{id:"case-2-manually-input"},"Case 2: Manually Input"),(0,l.kt)("p",null,"Why? Sometimes we may mess up in NPM deployment. As NPM doesn't allow us to redeploy to the same tag again, in this case we cannot just use the previous tag + 1. Therefore, we need to use previous tag + 2 instead and we manually configure it."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"After that, click ",(0,l.kt)("inlineCode",{parentName:"li"},"Run workflow")," to start"),(0,l.kt)("li",{parentName:"ul"},"You can see Summary for the overall job status."),(0,l.kt)("li",{parentName:"ul"},"Once ",(0,l.kt)("inlineCode",{parentName:"li"},"release-draft-note")," and ",(0,l.kt)("inlineCode",{parentName:"li"},"release-executables")," is finished, then go to ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases"},"releases"),", edit the draft note and save as draft for time being.",(0,l.kt)("ul",{parentName:"li"},(0,l.kt)("li",{parentName:"ul"},"Example: Adding header, update content if necessary, and click ",(0,l.kt)("inlineCode",{parentName:"li"},"Auto-generate release notes")," to include more info."))),(0,l.kt)("li",{parentName:"ul"},"Once ",(0,l.kt)("inlineCode",{parentName:"li"},"release-docker")," is finished, then test it locally first. You'll be expected to see ",(0,l.kt)("inlineCode",{parentName:"li"},"Upgrade Available")," notification in UI as we haven't published the release note. (the version is retrieved from there)"),(0,l.kt)("li",{parentName:"ul"},"Once everything is finished, then publish the release note and the deployment is considered as DONE.")),(0,l.kt)("h3",{id:"how-does-release-action-work-"},"How does release action work ?"),(0,l.kt)("h4",{id:"validate-branch"},"validate-branch"),(0,l.kt)("p",null,"To check if ",(0,l.kt)("inlineCode",{parentName:"p"},"github.ref")," is master. Otherwise, other branches will be not accepted."),(0,l.kt)("h4",{id:"process-input"},"process-input"),(0,l.kt)("p",null,"To enrich target tag or previous tag if necessary."),(0,l.kt)("h4",{id:"pr-to-master"},"pr-to-master"),(0,l.kt)("p",null,"Automate a PR from develop to master branch so that we know the actual differences between the previous tag and the current tag. We choose master branch for a deployment base."),(0,l.kt)("h4",{id:"release-npm"},"release-npm"),(0,l.kt)("p",null,"Build frontend and backend and release them to NPM. The changes during built such as version bumping will be committed and pushed to a temporary branch and an automated PR will be created and merged to master branch."),(0,l.kt)("p",null,"Note that once you publish with a certain tag, you cannot publish with the same tag again."),(0,l.kt)("h4",{id:"release-draft-note"},"release-draft-note"),(0,l.kt)("p",null,"Generate a draft release note. Some actions need to be done after this step."),(0,l.kt)("h4",{id:"release-docker"},"release-docker"),(0,l.kt)("p",null,"Build docker image and publish it to Docker Hub. It may take around 15 - 30 mins."),(0,l.kt)("h4",{id:"close-issues"},"close-issues"),(0,l.kt)("p",null,"Open issues marked with label ",(0,l.kt)("inlineCode",{parentName:"p"},"Status: Fixed")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"Status: Resolved")," will be closed by bot automatically with comment mentioning the fix is included in which version."),(0,l.kt)("p",null,"Example:"),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/167241574-f8f7061f-c689-444a-b761-0a727974c53f.png",alt:"image"})),(0,l.kt)("h4",{id:"publish-docs"},"publish-docs"),(0,l.kt)("p",null,"Publish Documentations"),(0,l.kt)("h4",{id:"update-sdk-path"},"update-sdk-path"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"nocodb-sdk")," is used in frontend and backend. However, in develop branch, the value would be ",(0,l.kt)("inlineCode",{parentName:"p"},"file:../nocodb-sdk")," for development purpose (so that the changes done in nocodb-sdk in develop will be included in frontend and backend). During the deployment, the value will be changed to the target tag. This job is to update them back."),(0,l.kt)("h4",{id:"sync-to-develop"},"sync-to-develop"),(0,l.kt)("p",null,"Once the deployment is finished, there would be some new changes being pushed to master branch. This job is to sync the changes back to develop so that both branch won't have any difference."),(0,l.kt)("h2",{id:"daily-builds"},"Daily builds"),(0,l.kt)("h3",{id:"what-are-daily-builds-"},"What are daily builds ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"NocoDB creates every 6 hours from develop branches and publishes as nocodb/nocodb-daily"),(0,l.kt)("li",{parentName:"ul"},"This is so that we can easily try what is in the develop branch easily.")),(0,l.kt)("h3",{id:"docker-images"},"Docker images"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The docker images will be built and pushed to Docker Hub (See ",(0,l.kt)("a",{parentName:"li",href:"https://hub.docker.com/r/nocodb/nocodb-daily/tags"},"nocodb/nocodb-daily")," for the full list). ")),(0,l.kt)("h2",{id:"timely-builds"},"Timely builds"),(0,l.kt)("h3",{id:"what-are-timely-builds-"},"What are timely builds ?"),(0,l.kt)("p",null,"NocoDB has github actions which creates docker and binaries for each PR! And these can be found as a ",(0,l.kt)("strong",{parentName:"p"},"comment on the last commit")," of the PR. "),(0,l.kt)("p",null,"Example shown below"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Go to a PR and click on the comment."),(0,l.kt)("img",{width:"1111",alt:"Screenshot 2023-01-23 at 15 46 36",src:"https://user-images.githubusercontent.com/5435402/214083736-80062398-3712-430f-9865-86b110090c91.png"})),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Click on the link to copy the docker image and run it locally."),(0,l.kt)("img",{width:"1231",alt:"Screenshot 2023-01-23 at 15 46 55",src:"https://user-images.githubusercontent.com/5435402/214083755-945d9485-2b9e-4739-8408-068bdf4a84b7.png"}))),(0,l.kt)("p",null,"This is to"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"reduce pull request cycle time"),(0,l.kt)("li",{parentName:"ul"},"allow issue reporters / reviewers to verify the fix without setting up their local machines")),(0,l.kt)("h3",{id:"docker-images-1"},"Docker images"),(0,l.kt)("p",null,"When a non-draft Pull Request is created, reopened or synchronized, a timely build for Docker would be triggered for the changes only included in the following paths."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nocodb-sdk/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nc-gui/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nc-plugin/**")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"packages/nocodb/**"))),(0,l.kt)("p",null,"The docker images will be built and pushed to Docker Hub (See ",(0,l.kt)("a",{parentName:"p",href:"https://hub.docker.com/r/nocodb/nocodb-timely/tags"},"nocodb/nocodb-timely")," for the full list). Once the image is ready, Github bot will add a comment with the command in the pull request. The tag would be ",(0,l.kt)("inlineCode",{parentName:"p"},"-pr---"),"."),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/175012097-240dab05-da93-4c4e-87c1-1c36fb1350bd.png",alt:"image"})),(0,l.kt)("h2",{id:"executables-or-binaries"},"Executables or Binaries"),(0,l.kt)("p",null,"Similarly, we provide a timely build for executables for non-docker users. The source code will be built, packaged as binary files, and pushed to Github (See ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb-timely/releases"},"nocodb/nocodb-timely")," for the full list)."),(0,l.kt)("p",null,"Currently, we only support the following targets:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-linux-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-macos-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-win-arm64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-linux-x64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-macos-x64")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"node16-win-x64"))),(0,l.kt)("p",null,"Once the executables are ready, Github bot will add a comment with the commands in the pull request."),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/175012070-f5f3e7b8-6dc5-4d1c-9f7e-654bc5039521.png",alt:"image"})),(0,l.kt)("p",null,"NocoDB creates Docker and Binaries for each PR."),(0,l.kt)("p",null,"This is to"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"reduce pull request cycle time"),(0,l.kt)("li",{parentName:"ul"},"allow issue reporters / reviewers to verify the fix without setting up their local machines")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3720c009.99c8d2d6.js b/packages/noco-docs/dist/assets/js/3720c009.99c8d2d6.js new file mode 100644 index 0000000000..c61ed5ef26 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3720c009.99c8d2d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3751],{76495:(e,t,a)=>{a.r(t),a.d(t,{default:()=>h});var l=a(67294),n=a(86010),r=a(97325);const c=()=>(0,r.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var s=a(35463),o=a(23702),m=a(66945),g=a(53852);const u={tag:"tag_Nnez"};function i(e){let{letterEntry:t}=e;return l.createElement("article",null,l.createElement("h2",null,t.letter),l.createElement("ul",{className:"padding--none"},t.tags.map((e=>l.createElement("li",{key:e.permalink,className:u.tag},l.createElement(g.Z,e))))),l.createElement("hr",null))}function E(e){let{tags:t}=e;const a=function(e){const t={};return Object.values(e).forEach((e=>{const a=function(e){return e[0].toUpperCase()}(e.label);t[a]??=[],t[a].push(e)})),Object.entries(t).sort(((e,t)=>{let[a]=e,[l]=t;return a.localeCompare(l)})).map((e=>{let[t,a]=e;return{letter:t,tags:a.sort(((e,t)=>e.label.localeCompare(t.label)))}}))}(t);return l.createElement("section",{className:"margin-vert--lg"},a.map((e=>l.createElement(i,{key:e.letter,letterEntry:e}))))}var p=a(33647);function h(e){let{tags:t}=e;const a=c();return l.createElement(s.FG,{className:(0,n.Z)(o.k.wrapper.docsPages,o.k.page.docsTagsListPage)},l.createElement(s.d,{title:a}),l.createElement(p.Z,{tag:"doc_tags_list"}),l.createElement(m.Z,null,l.createElement("div",{className:"container margin-vert--lg"},l.createElement("div",{className:"row"},l.createElement("main",{className:"col col--8 col--offset-2"},l.createElement("h1",null,a),l.createElement(E,{tags:t}))))))}},53852:(e,t,a)=>{a.d(t,{Z:()=>s});var l=a(67294),n=a(86010),r=a(83699);const c={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function s(e){let{permalink:t,label:a,count:s}=e;return l.createElement(r.Z,{href:t,className:(0,n.Z)(c.tag,s?c.tagWithCount:c.tagRegular)},a,s&&l.createElement("span",null,s))}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3721b01f.84024fe5.js b/packages/noco-docs/dist/assets/js/3721b01f.84024fe5.js new file mode 100644 index 0000000000..b3e5a14f92 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3721b01f.84024fe5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1471],{83769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3a7c0cf6.494bacc8.js b/packages/noco-docs/dist/assets/js/3a7c0cf6.494bacc8.js new file mode 100644 index 0000000000..5347cadee1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3a7c0cf6.494bacc8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2533],{30637:o=>{o.exports=JSON.parse('{"label":"Collaboration","permalink":"/tags/collaboration","allTagsPath":"/tags","count":8,"items":[{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/collaboration/base-collaboration"},{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"collaboration/oss-specific-details","title":"In Open Source","description":"This article explains specifics of User management in OSS.","permalink":"/collaboration/oss-specific-details"},{"id":"bases/share-base","title":"Share base","description":"Procedures to share a base & generating embedded iframe","permalink":"/bases/share-base"},{"id":"collaboration/share-base","title":"Share base","description":"Procedures to share a base publicly & generating embedded iframe","permalink":"/collaboration/share-base"},{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/collaboration/workspace-collaboration"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3aad05b1.f2381f8b.js b/packages/noco-docs/dist/assets/js/3aad05b1.f2381f8b.js new file mode 100644 index 0000000000..912a5cf6c6 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3aad05b1.f2381f8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3512],{28445:e=>{e.exports=JSON.parse('{"label":"Account Settings","permalink":"/tags/account-settings","allTagsPath":"/tags","count":3,"items":[{"id":"account-settings/api-tokens","title":"API tokens","description":"This article explains how to create and work with API Tokens.","permalink":"/account-settings/api-tokens"},{"id":"account-settings/oss-specific-details","title":"In Open Source","description":"This article explains Account settings specifics in Open source NocoDB.","permalink":"/account-settings/oss-specific-details"},{"id":"account-settings/profile-page","title":"Profile page","description":"This article explains how to manage your profile page.","permalink":"/account-settings/profile-page"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3ac80ba6.bb7b70c4.js b/packages/noco-docs/dist/assets/js/3ac80ba6.bb7b70c4.js new file mode 100644 index 0000000000..bda24d4cad --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3ac80ba6.bb7b70c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3515],{21504:a=>{a.exports=JSON.parse('{"label":"Data sources","permalink":"/tags/data-sources","allTagsPath":"/tags","count":4,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"},{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","permalink":"/data-sources/connect-to-data-source"},{"id":"data-sources/data-source-overview","title":"Data sources overview","description":"NocoDB Data-Source sync, access control & re-config","permalink":"/data-sources/data-source-overview"},{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","permalink":"/data-sources/sync-with-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/3da8114c.0474e88b.js b/packages/noco-docs/dist/assets/js/3da8114c.0474e88b.js new file mode 100644 index 0000000000..e300769a9b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/3da8114c.0474e88b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3338],{54021:o=>{o.exports=JSON.parse('{"label":"Workspaces","permalink":"/tags/workspaces","allTagsPath":"/tags","count":6,"items":[{"id":"workspaces/actions-on-workspace","title":"Actions on workspace","description":"This article explains how to rename or delete a workspace.","permalink":"/workspaces/actions-on-workspace"},{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"workspaces/create-workspace","title":"Create workspace","description":"Learn how to create a workspace in NocoDB","permalink":"/workspaces/create-workspace"},{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/collaboration/workspace-collaboration"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"},{"id":"workspaces/workspace-overview","title":"Workspace overview","description":"This article briefs the concept of workspaces in NocoDB.","permalink":"/workspaces/workspace-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/408139c4.6b2f2ba2.js b/packages/noco-docs/dist/assets/js/408139c4.6b2f2ba2.js new file mode 100644 index 0000000000..3b511bbce4 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/408139c4.6b2f2ba2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8248],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=r.createContext({}),l=function(e){var t=r.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(i.Provider,{value:t},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,i=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),p=l(n),d=a,f=p["".concat(i,".").concat(d)]||p[d]||g[d]||o;return n?r.createElement(f,s(s({ref:t},c),{},{components:n})):r.createElement(f,s({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u[p]="string"==typeof e?e:a,s[1]=u;for(var l=2;l{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>s,default:()=>g,frontMatter:()=>o,metadata:()=>u,toc:()=>l});var r=n(87462),a=(n(67294),n(3905));const o={title:"Languages",description:"Multiple languages on Dashboard!"},s=void 0,u={unversionedId:"setup-and-usages/languages",id:"version-0.109.7/setup-and-usages/languages",title:"Languages",description:"Multiple languages on Dashboard!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/180.languages.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/languages",permalink:"/0.109.7/setup-and-usages/languages",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/180.languages.md",tags:[],version:"0.109.7",sidebarPosition:180,frontMatter:{title:"Languages",description:"Multiple languages on Dashboard!"},sidebar:"tutorialSidebar",previous:{title:"Account Settings",permalink:"/0.109.7/setup-and-usages/account-settings"},next:{title:"Expanded Form",permalink:"/0.109.7/setup-and-usages/expanded-form"}},i={},l=[],c={toc:l},p="wrapper";function g(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"NocoDB supports multiple lanuages on dashboard. By default, English will be used. However, if you prefer to display in other languages, you can do the following steps to change the language."),(0,a.kt)("p",null,"Open ",(0,a.kt)("inlineCode",{parentName:"p"},"Project Menu")," (click on project name on left top to access Project menu)"),(0,a.kt)("img",{width:"505",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194849611-7d037906-7c21-4797-8bb4-12edeafe8b7b.png"}),(0,a.kt)("p",null,"and select the one you prefer."),(0,a.kt)("p",null,"If you want to help translate, please check out ",(0,a.kt)("a",{href:"../engineering/translation",target:"_blank"},"i18n"),". If you want to request a new language, please create an issue on ",(0,a.kt)("a",{href:"https://github.com/nocodb/nocodb/issues",target:"_blank"},"Github"),"."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4145e2b1.c42db197.js b/packages/noco-docs/dist/assets/js/4145e2b1.c42db197.js new file mode 100644 index 0000000000..3362bce7f8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4145e2b1.c42db197.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7530],{66146:e=>{e.exports=JSON.parse('{"label":"Hide","permalink":"/tags/hide","allTagsPath":"/tags","count":1,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4248.06b3a45d.js b/packages/noco-docs/dist/assets/js/4248.06b3a45d.js new file mode 100644 index 0000000000..9509262138 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4248.06b3a45d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4248],{74248:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(67294),o=n(97325),l=n(35463),r=n(66945);function c(){return a.createElement(a.Fragment,null,a.createElement(l.d,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/44655909.dc56ede0.js b/packages/noco-docs/dist/assets/js/44655909.dc56ede0.js new file mode 100644 index 0000000000..5b6a1ac3e2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/44655909.dc56ede0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2406],{89104:e=>{e.exports=JSON.parse('{"label":"Text based types","permalink":"/tags/text-based-types","allTagsPath":"/tags","count":5,"items":[{"id":"fields/field-types/text-based/email","title":"Email","description":"This article explains how to create & work with an Email field.","permalink":"/fields/field-types/text-based/email"},{"id":"fields/field-types/text-based/long-text","title":"Long text","description":"This article explains how to create & work with a Long text field.","permalink":"/fields/field-types/text-based/long-text"},{"id":"fields/field-types/text-based/phonenumber","title":"Phone Number","description":"This article explains how to create & work with a Phone number field.","permalink":"/fields/field-types/text-based/phonenumber"},{"id":"fields/field-types/text-based/single-line-text","title":"Single line text","description":"This article explains how to create & work with a Single line text field.","permalink":"/fields/field-types/text-based/single-line-text"},{"id":"fields/field-types/text-based/url","title":"URL","description":"This article explains how to create & work with an URL field.","permalink":"/fields/field-types/text-based/url"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4496.40495c0d.js b/packages/noco-docs/dist/assets/js/4496.40495c0d.js new file mode 100644 index 0000000000..cab72d7418 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4496.40495c0d.js @@ -0,0 +1 @@ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4496],{17331:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function n(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(n(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(i(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var i=!1;function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}return n.listener=t,this.on(e,n),this},t.prototype.removeListener=function(e,t){var n,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(n=this._events[e]).length,a=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(n)){for(c=s;c-- >0;)if(n[c]===t||n[c].listener&&n[c].listener===t){a=c;break}if(a<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(i=this._events[e]))this.removeListener(e,i);else if(i)for(;i.length;)this.removeListener(e,i[i.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8131:(e,t,r)=>{"use strict";var i=r(49374),n=r(17775),a=r(23076);function s(e,t,r){return new i(e,t,r)}s.version=r(24336),s.AlgoliaSearchHelper=i,s.SearchParameters=n,s.SearchResults=a,e.exports=s},68078:(e,t,r)=>{"use strict";var i=r(17331);function n(e,t){this.main=e,this.fn=t,this.lastResults=null}r(14853)(n,i),n.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},n.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=n},82437:(e,t,r)=>{"use strict";var i=r(52344),n=r(90116),a=r(49803),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var n=""+r,a=e[t]?e[t].concat(n):[n],c={};return c[t]=a,i({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var i=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&i===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return n(e)?{}:e;if("string"==typeof t)return a(e,[t]);if("function"==typeof t){var i=!1,s=Object.keys(e).reduce((function(n,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(i=!0),n[a]=c,n}),{});return i?s:e}},isRefined:function(e,t,r){var i=Boolean(e[t])&&e[t].length>0;if(void 0===r||!i)return i;var n=""+r;return-1!==e[t].indexOf(n)}};e.exports=s},17775:(e,t,r)=>{"use strict";var i=r(52344),n=r(7888),a=r(22686),s=r(60185),c=r(90116),u=r(49803),o=r(28023),h=r(46801),l=r(82437);function f(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return f(t[r],e)})):e===t}function d(e){var t=e?d._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var i=-1!==d.PARAMETERS.indexOf(e),n=void 0!==t[e];!i&&n&&(r[e]=t[e])}))}d.PARAMETERS=Object.keys(new d),d._parseNumbers=function(e){if(e instanceof d)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var i=e[r];if("string"==typeof i){var n=parseFloat(i);t[r]=isNaN(n)?i:n}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var i=e.numericRefinements[t]||{};r[t]={},Object.keys(i).forEach((function(e){var n=i[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=n}))})),t.numericRefinements=r}return s({},e,t)},d.make=function(e){var t=new d(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},d.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&c(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):c(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},d.prototype={constructor:d,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:l.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:l.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:l.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:l.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=o(r);if(this.isNumericRefined(e,t,i))return this;var n=s({},this.numericRefinements);return n[e]=s({},n[e]),n[e][t]?(n[e][t]=n[e][t].slice(),n[e][t].push(i)):n[e][t]=[i],this.setQueryParameters({numericRefinements:n})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var i=r;return void 0!==i?this.isNumericRefined(e,t,i)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t&&f(r.val,o(i))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,i){return i===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return c(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,i=Object.keys(r).reduce((function(i,n){var a=r[n],s={};return a=a||{},Object.keys(a).forEach((function(r){var i=a[r]||[],c=[];i.forEach((function(t){e({val:t,op:r},n,"numeric")||c.push(t)})),c.length!==i.length&&(t=!0),s[r]=c})),i[n]=s,i}),{});return t?i:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:l.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:l.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:l.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:l.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:l.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:l.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:l.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:l.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:l.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&l.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var i=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!i)return i;var a,s,c=o(r),u=void 0!==(a=this.numericRefinements[e][t],s=c,n(a,(function(e){return f(e,s)})));return i&&u},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets()).sort()},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0}))).sort()},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(i){var n=r[i];-1===e.indexOf(i)&&void 0!==n&&(t[i]=n)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=d.validate(this,e);if(t)throw t;var r=this,i=d._parseNumbers(e),n=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(i).reduce((function(e,t){var r=void 0!==e[t],n=void 0!==i[t];return r&&!n?u(e,[t]):(n&&(e[t]=i[t]),e)}),n);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return n(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=d},10210:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var i=e.hierarchicalFacets[r],o=e.hierarchicalFacetsRefinements[i.name]&&e.hierarchicalFacetsRefinements[i.name][0]||"",h=e._getHierarchicalFacetSeparator(i),l=e._getHierarchicalRootPath(i),f=e._getHierarchicalShowParentLevel(i),d=a(e._getHierarchicalFacetSortBy(i)),m=t.every((function(e){return e.exhaustive})),p=function(e,t,r,i,a){return function(o,h,l){var f=o;if(l>0){var d=0;for(f=o;d{"use strict";var i=r(74587),n=r(52344),a=r(94039),s=r(7888),c=r(69725),u=r(82293),o=r(60185),h=r(42148),l=a.escapeFacetValue,f=a.unescapeFacetValue,d=r(10210);function m(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function v(e,t,r){var a=t[0];this._rawResults=t;var u=this;Object.keys(a).forEach((function(e){u[e]=a[e]})),Object.keys(r||{}).forEach((function(e){u[e]=r[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var h=e.getRefinedDisjunctiveFacets(),l=m(e.facets),v=m(e.disjunctiveFacets),g=1,y=a.facets||{};Object.keys(y).forEach((function(t){var r,i,n=y[t],o=(r=e.hierarchicalFacets,i=t,s(r,(function(e){return(e.attributes||[]).indexOf(i)>-1})));if(o){var h=o.attributes.indexOf(t),f=c(e.hierarchicalFacets,(function(e){return e.name===o.name}));u.hierarchicalFacets[f][h]={attribute:t,data:n,exhaustive:a.exhaustiveFacetsCount}}else{var d,m=-1!==e.disjunctiveFacets.indexOf(t),g=-1!==e.facets.indexOf(t);m&&(d=v[t],u.disjunctiveFacets[d]={name:t,data:n,exhaustive:a.exhaustiveFacetsCount},p(u.disjunctiveFacets[d],a.facets_stats,t)),g&&(d=l[t],u.facets[d]={name:t,data:n,exhaustive:a.exhaustiveFacetsCount},p(u.facets[d],a.facets_stats,t))}})),this.hierarchicalFacets=i(this.hierarchicalFacets),h.forEach((function(r){var i=t[g],s=i&&i.facets?i.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(s).forEach((function(t){var r,l=s[t];if(h){r=c(e.hierarchicalFacets,(function(e){return e.name===h.name}));var d=c(u.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===d)return;u.hierarchicalFacets[r][d].data=o({},u.hierarchicalFacets[r][d].data,l)}else{r=v[t];var m=a.facets&&a.facets[t]||{};u.disjunctiveFacets[r]={name:t,data:n({},l,m),exhaustive:i.exhaustiveFacetsCount},p(u.disjunctiveFacets[r],i.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(i){!u.disjunctiveFacets[r].data[i]&&e.disjunctiveFacetsRefinements[t].indexOf(f(i))>-1&&(u.disjunctiveFacets[r].data[i]=0)}))}})),g++})),e.getRefinedHierarchicalFacets().forEach((function(r){var i=e.getHierarchicalFacetByName(r),a=e._getHierarchicalFacetSeparator(i),s=e.getHierarchicalRefinement(r);0===s.length||s[0].split(a).length<2||t.slice(g).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var o=r[t],h=c(e.hierarchicalFacets,(function(e){return e.name===i.name})),l=c(u.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==l){var f={};if(s.length>0){var d=s[0].split(a)[0];f[d]=u.hierarchicalFacets[h][l].data[d]}u.hierarchicalFacets[h][l].data=n(f,o,u.hierarchicalFacets[h][l].data)}})),g++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],i=l[t];u.facets[i]={name:t,data:y[t],exhaustive:a.exhaustiveFacetsCount},r.forEach((function(e){u.facets[i]=u.facets[i]||{name:t},u.facets[i].data=u.facets[i].data||{},u.facets[i].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(d(e)),this.facets=i(this.facets),this.disjunctiveFacets=i(this.disjunctiveFacets),this._state=e}function g(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var i=s(e.facets,r);return i?Object.keys(i.data).map((function(r){var n=l(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isFacetRefined(t,n),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var n=s(e.disjunctiveFacets,r);return n?Object.keys(n.data).map((function(r){var i=l(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,i)}})):[]}if(e._state.isHierarchicalFacet(t)){var a=s(e.hierarchicalFacets,r);if(!a)return a;var c=e._state.getHierarchicalFacetByName(t),u=e._state._getHierarchicalFacetSeparator(c),o=f(e._state.getHierarchicalRefinement(t)[0]||"");0===o.indexOf(c.rootPath)&&(o=o.replace(c.rootPath+u,""));var h=o.split(u);return h.unshift(t),y(a,h,0),a}}function y(e,t,r){e.isRefined=e.name===t[r],e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,i){if(i=i||0,Array.isArray(t))return e(t,r[i]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return R(e,t,r,i+1)})),s=e(a,r[i]);return n({data:s},t)}function F(e,t){var r=s(e,(function(e){return e.name===t}));return r&&r.stats}function _(e,t,r,i,n){var a=s(n,(function(e){return e.name===r})),c=a&&a.data&&a.data[i]?a.data[i]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:i,count:c,exhaustive:u}}v.prototype.getFacetByName=function(e){function t(t){return t.name===e}return s(this.facets,t)||s(this.disjunctiveFacets,t)||s(this.hierarchicalFacets,t)},v.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],v.prototype.getFacetValues=function(e,t){var r=g(this,e);if(r){var i,a=n({},t,{sortBy:v.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),s=this;if(Array.isArray(r))i=[e];else i=s._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){if(a.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(s,t);if(r)return function(e,t){var r=[],i=[],n=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==n[t]?r[n[t]]=e:i.push(e)})),r=r.filter((function(e){return e}));var a,s=t.sortRemainingBy;return"hidden"===s?r:(a="alpha"===s?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(h(i,a[0],a[1])))}(e,r)}if(Array.isArray(a.sortBy)){var i=u(a.sortBy,v.DEFAULT_SORT);return h(e,i[0],i[1])}if("function"==typeof a.sortBy)return function(e,t){return t.sort(e)}(a.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,i)}},v.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},v.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(i){e.facetsRefinements[i].forEach((function(n){r.push(_(e,"facet",i,n,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(i){e.facetsExcludes[i].forEach((function(n){r.push(_(e,"exclude",i,n,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(i){e.disjunctiveFacetsRefinements[i].forEach((function(n){r.push(_(e,"disjunctive",i,n,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(i){e.hierarchicalFacetsRefinements[i].forEach((function(n){r.push(function(e,t,r,i){var n=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(n),c=r.split(a),u=s(i,(function(e){return e.name===t})),o=c.reduce((function(e,t){var r=e&&s(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,l=o&&o.exhaustive||!1,f=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:f,count:h,exhaustive:l}}(e,i,n,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var i=e.numericRefinements[t];Object.keys(i).forEach((function(e){i[e].forEach((function(i){r.push({type:"numeric",attributeName:t,name:i,numericValue:i,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=v},49374:(e,t,r)=>{"use strict";var i=r(17331),n=r(68078),a=r(94039).escapeFacetValue,s=r(14853),c=r(60185),u=r(90116),o=r(49803),h=r(96394),l=r(17775),f=r(23076),d=r(24336);function m(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+d+")"),this.setClient(e);var i=r||{};i.index=t,this.state=l.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function p(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}s(m,i),m.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},m.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},m.prototype.getQuery=function(){var e=this.state;return h._getHitsSearchParams(e)},m.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,i=h._getQueries(r.index,r),n=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(i).then((function(e){return n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),{content:new f(r,e.results),state:r,_originalResponse:e}}),(function(e){throw n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),e}));this.client.search(i).then((function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(null,new f(r,e.results),r)})).catch((function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(e,null,r)}))},m.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var i=r.getModifiedState(t),n=c({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:o(h._getHitsSearchParams(i),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var s=this.client.initIndex(i.index);if("function"!=typeof s.findAnswers)throw new Error(a);return s.findAnswers(i.query,e.queryLanguages,n)},m.prototype.searchForFacetValues=function(e,t,r,i){var n="function"==typeof this.client.searchForFacetValues,s="function"==typeof this.client.initIndex;if(!n&&!s&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(i||{}),u=c.isDisjunctiveFacet(e),o=h.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var l,f=this;return n?l=this.client.searchForFacetValues([{indexName:c.index,params:o}]):s?l=this.client.initIndex(c.index).searchForFacetValues(o):(delete o.facetName,l=this.client.search([{type:"facet",facet:e,indexName:c.index,params:o}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t}),l.then((function(t){return f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.escapedValue=a(t.value),t.isRefined=u?c.isDisjunctiveFacetRefined(e,t.escapedValue):c.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw f._currentNbQueries--,0===f._currentNbQueries&&f.emit("searchQueueEmpty"),e}))},m.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},m.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},m.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},m.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},m.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},m.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},m.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},m.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},m.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},m.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},m.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},m.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},m.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},m.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},m.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},m.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},m.prototype.setCurrentPage=p,m.prototype.setPage=p,m.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},m.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},m.prototype.setState=function(e){return this._change({state:l.make(e),isPageReset:!1}),this},m.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new l(e),this},m.prototype.hasRefinements=function(e){return!!u(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},m.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},m.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},m.prototype.hasTag=function(e){return this.state.isTagRefined(e)},m.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},m.prototype.getIndex=function(){return this.state.index},m.prototype.getCurrentPage=v,m.prototype.getPage=v,m.prototype.getTags=function(){return this.state.tagRefinements},m.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var i=r[e];t.push({value:i,operator:e,type:"numeric"})})),t},m.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},m.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},m.prototype._search=function(e){var t=this.state,r=[],i=[];e.onlyWithDerivedHelpers||(i=h._getQueries(t.index,t),r.push({state:t,queriesCount:i.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var n=this.derivedHelpers.map((function(e){var i=e.getModifiedState(t),n=i.index?h._getQueries(i.index,i):[];return r.push({state:i,queriesCount:n.length,helper:e}),e.emit("search",{state:i,results:e.lastResults}),n})),a=Array.prototype.concat.apply(i,n),s=this._queryId++;if(this._currentNbQueries++,!a.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,s));try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,s)).catch(this._dispatchAlgoliaError.bind(this,s))}catch(c){this.emit("error",{error:c})}},m.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},m.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},m.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},m.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+d+")"),this.client=e),this},m.prototype.getClient=function(){return this.client},m.prototype.derive=function(e){var t=new n(this,e);return this.derivedHelpers.push(t),t},m.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},m.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=m},74587:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},52344:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},94039:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},7888:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{"use strict";var i=r(7888);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var n=t.split(":"),a=i(r,(function(e){return e[0]===n[0]}));return n.length>1||!a?(e[0].push(n[0]),e[1].push(n[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},14853:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},22686:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,i){return t.indexOf(r)>-1&&e.indexOf(r)===i}))}},60185:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,i){if(e===i)return e;for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)&&"__proto__"!==n&&"constructor"!==n){var a=i[n],s=e[n];void 0!==s&&void 0===a||(t(s)&&t(a)?e[n]=r(s,a):e[n]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var i=1,n=arguments.length;i{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},49803:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i=0||(n[r]=e[r]);return n}},42148:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,i=null===e,n=void 0!==t,a=null===t;if(!a&&e>t||i&&n||!r)return 1;if(!i&&e=i.length?a:"desc"===i[n]?-a:a}return e.index-r.index})),n.map((function(e){return e.value}))}},28023:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},96394:(e,t,r)=>{"use strict";var i=r(60185);function n(e){return Object.keys(e).sort().reduce((function(t,r){return t[r]=e[r],t}),{})}var a={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:a._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(i){r.push({indexName:e,params:a._getDisjunctiveFacetSearchParams(t,i)})})),t.getRefinedHierarchicalFacets().forEach((function(i){var n=t.getHierarchicalFacetByName(i),s=t.getHierarchicalRefinement(i),c=t._getHierarchicalFacetSeparator(n);if(s.length>0&&s[0].split(c).length>1){var u=s[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:n.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);u.forEach((function(i,s){var c=a._getDisjunctiveFacetSearchParams(t,i.attribute,0===s);function o(e){return n.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!o(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||o(t)||e.push(t),e}),[]),l=u[s-1];c.facetFilters=s>0?h.concat(l.attribute+":"+l.value):h.length>0?h:void 0,r.push({indexName:e,params:c})}))}})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(a._getHitsHierarchicalFacetsAttributes(e)).sort(),r=a._getFacetFilters(e),s=a._getNumericFilters(e),c=a._getTagFilters(e),u={facets:t.indexOf("*")>-1?["*"]:t,tagFilters:c};return r.length>0&&(u.facetFilters=r),s.length>0&&(u.numericFilters=s),n(i({},e.getQueryParams(),u))},_getDisjunctiveFacetSearchParams:function(e,t,r){var s=a._getFacetFilters(e,t,r),c=a._getNumericFilters(e,t),u=a._getTagFilters(e),o={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};u.length>0&&(o.tagFilters=u);var h=e.getHierarchicalFacetByName(t);return o.facets=h?a._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(o.numericFilters=c),s.length>0&&(o.facetFilters=s),n(i({},e.getQueryParams(),o))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(i){var n=e.numericRefinements[i]||{};Object.keys(n).forEach((function(e){var a=n[e]||[];t!==i&&a.forEach((function(t){if(Array.isArray(t)){var n=t.map((function(t){return i+e+t}));r.push(n)}else r.push(i+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var i=[],n=e.facetsRefinements||{};Object.keys(n).sort().forEach((function(e){(n[e]||[]).sort().forEach((function(t){i.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).sort().forEach((function(e){(a[e]||[]).sort().forEach((function(t){i.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).sort().forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var n=[];r.sort().forEach((function(t){n.push(e+":"+t)})),i.push(n)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).sort().forEach((function(n){var a=(c[n]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(n),h=e._getHierarchicalFacetSeparator(o),l=e._getHierarchicalRootPath(o);if(t===n){if(-1===a.indexOf(h)||!l&&!0===r||l&&l.split(h).length===a.split(h).length)return;l?(u=l.split(h).length-1,a=l):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&i.push([s+":"+a])}})),i},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var i=e.getHierarchicalRefinement(r.name)[0];if(!i)return t.push(r.attributes[0]),t;var n=e._getHierarchicalFacetSeparator(r),a=i.split(n).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var i=e._getHierarchicalFacetSeparator(t);if(!0===r){var n=e._getHierarchicalRootPath(t),a=0;return n&&(a=n.split(i).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(i).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,s){var c=s.isDisjunctiveFacet(e)?s.clearRefinements(e):s,u={facetQuery:t,facetName:e};return"number"==typeof r&&(u.maxFacetHits=r),n(i({},a._getHitsSearchParams(c),u))}};e.exports=a},46801:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},24336:e=>{"use strict";e.exports="3.14.2"},23777:(e,t,r)=>{"use strict";r.d(t,{c:()=>o});var i=r(67294),n=r(39962);const a=["zero","one","two","few","many","other"];function s(e){return a.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function u(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,i.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),c}}),[e])}function o(){const e=u();return{selectMessage:(t,r)=>function(e,t,r){const i=e.split("|");if(1===i.length)return i[0];i.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${i.length}: ${e}`);const n=r.select(t),a=r.pluralForms.indexOf(n);return i[Math.min(a,i.length-1)]}(r,t,e)}}},84496:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>E});var i=r(67294),n=r(86010),a=r(8131),s=r.n(a),c=r(31514),u=r(83699),o=r(36136),h=r(23777),l=r(61500),f=r(43768),d=r(35463),m=r(97795),p=r(39962);var v=r(89871),g=r(97325),y=r(66945);const R={searchQueryInput:"searchQueryInput_tAtn",searchVersionInput:"searchVersionInput_pEIW",searchResultsColumn:"searchResultsColumn_EPg1",algoliaLogo:"algoliaLogo_v0Zm",algoliaLogoPathFill:"algoliaLogoPathFill_Wcie",searchResultItem:"searchResultItem_tk59",searchResultItemHeading:"searchResultItemHeading_SlUl",searchResultItemPath:"searchResultItemPath_F356",searchResultItemSummary:"searchResultItemSummary_Csqe",searchQueryColumn:"searchQueryColumn_dnRM",searchVersionColumn:"searchVersionColumn_LFf5",searchLogoColumn:"searchLogoColumn_wQ1C",loadingSpinner:"loadingSpinner_NGMR","loading-spin":"loading-spin_RtPG",loader:"loader_Dnz0"};var F=r(28499);function _(e){let{docsSearchVersionsHelpers:t}=e;const r=Object.entries(t.allDocsData).filter((e=>{let[,t]=e;return t.versions.length>1}));return i.createElement("div",{className:(0,n.Z)("col","col--3","padding-left--none",R.searchVersionColumn)},r.map((e=>{let[n,a]=e;const s=r.length>1?`${n}: `:"";return i.createElement("select",{key:n,onChange:e=>t.setSearchVersion(n,e.target.value),defaultValue:t.searchVersions[n],className:R.searchVersionInput},a.versions.map(((e,t)=>i.createElement("option",{key:t,label:`${s}${e.label}`,value:e.name}))))})))}function b(){const{siteConfig:{themeConfig:e},i18n:{currentLocale:t}}=(0,p.Z)(),{typesense:{typesenseCollectionName:r,typesenseServerConfig:a,typesenseSearchParameters:d,externalUrlRegex:b}}=e,E=function(){const{selectMessage:e}=(0,h.c)();return t=>e(t,(0,g.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),P=function(){const e=(0,v._r)(),[t,r]=(0,i.useState)((()=>Object.entries(e).reduce(((e,t)=>{let[r,i]=t;return{...e,[r]:i.versions[0].name}}),{}))),n=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:n,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),{searchQuery:j,setSearchQuery:x}=(0,m.O)(),w={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[S,N]=(0,i.useReducer)(((e,t)=>{switch(t.type){case"reset":return w;case"loading":return{...e,loading:!0};case"update":return j!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),w),A=new F.Z({server:a,additionalSearchParameters:{query_by:"hierarchy.lvl0,hierarchy.lvl1,hierarchy.lvl2,hierarchy.lvl3,hierarchy.lvl4,hierarchy.lvl5,hierarchy.lvl6,content",include_fields:"hierarchy.lvl0,hierarchy.lvl1,hierarchy.lvl2,hierarchy.lvl3,hierarchy.lvl4,hierarchy.lvl5,hierarchy.lvl6,content,anchor,url,type,id",highlight_full_fields:"hierarchy.lvl0,hierarchy.lvl1,hierarchy.lvl2,hierarchy.lvl3,hierarchy.lvl4,hierarchy.lvl5,hierarchy.lvl6,content",group_by:"url",group_limit:3,highlight_affix_num_tokens:50,...d}}),H=s()(A.searchClient,r,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});H.on("result",(e=>{let{results:{query:t,hits:r,page:i,nbHits:n,nbPages:a}}=e;if(""===t||!Array.isArray(r))return void N({type:"reset"});const s=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),c=r.map((e=>{let{url:t,_highlightResult:r,_snippetResult:i={}}=e;const n=new URL(t),a=[0,1,2,3,4,5,6].map((e=>{const t=r[`hierarchy.lvl${e}`];return t?s(t.value):""})).filter((e=>e));return{title:a.pop(),url:(0,l.F)(b,n.href)?n.href:n.pathname+n.hash,summary:i.content?`${s(i.content.value)}...`:"",breadcrumbs:a}}));N({type:"update",value:{items:c,query:t,totalResults:n,totalPages:a,lastPage:i,hasMore:a>i+1,loading:!1}})})),H.on("error",(function(e){console.error(e)}));const[O,C]=(0,i.useState)(null),T=(0,i.useRef)(0),k=(0,i.useRef)(o.Z.canUseIntersectionObserver&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&T.current>r&&N({type:"advance"}),T.current=r}),{threshold:1})),Q=()=>j?(0,g.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:j}):(0,g.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"}),I=(0,f.zX)((function(e){void 0===e&&(e=0),H.addDisjunctiveFacetRefinement("docusaurus_tag","default"),H.addDisjunctiveFacetRefinement("language",t),Object.entries(P.searchVersions).forEach((e=>{let[t,r]=e;H.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${t}-${r}`)})),H.setQuery(j).setPage(e).search()}));return(0,i.useEffect)((()=>{if(!O)return;const e=k.current;return e?(e.observe(O),()=>e.unobserve(O)):()=>!0}),[O]),(0,i.useEffect)((()=>{N({type:"reset"}),j&&(N({type:"loading"}),setTimeout((()=>{I()}),300))}),[j,P.searchVersions,I]),(0,i.useEffect)((()=>{S.lastPage&&0!==S.lastPage&&I(S.lastPage)}),[I,S.lastPage]),i.createElement(y.Z,null,i.createElement(c.Z,null,i.createElement("title",null,function(e){const{siteConfig:t}=(0,p.Z)(),{title:r,titleDelimiter:i}=t;return e?.trim().length?`${e.trim()} ${i} ${r}`:r}(Q())),i.createElement("meta",{property:"robots",content:"noindex, follow"})),i.createElement("div",{className:"container margin-vert--lg"},i.createElement("h1",null,Q()),i.createElement("form",{className:"row",onSubmit:e=>e.preventDefault()},i.createElement("div",{className:(0,n.Z)("col",R.searchQueryColumn,{"col--9":P.versioningEnabled,"col--12":!P.versioningEnabled})},i.createElement("input",{type:"search",name:"q",className:R.searchQueryInput,placeholder:(0,g.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,g.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>x(e.target.value),value:j,autoComplete:"off",autoFocus:!0})),P.versioningEnabled&&i.createElement(_,{docsSearchVersionsHelpers:P})),i.createElement("div",{className:"row"},i.createElement("div",{className:(0,n.Z)("col","col--8",R.searchResultsColumn)},!!S.totalResults&&E(S.totalResults)),i.createElement("div",{className:(0,n.Z)("col","col--4","text--right",R.searchLogoColumn)},i.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://typesense.org/?utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch","aria-label":(0,g.I)({id:"theme.SearchPage.typesenseLabel",message:"Search by Typesense",description:"The ARIA label for Typesense mention"})},i.createElement("svg",{fill:"none",height:"21",viewBox:"0 0 141 21",width:"141",xmlns:"http://www.w3.org/2000/svg"},i.createElement("clipPath",{id:"a"},i.createElement("path",{d:"m0 0h141v21h-141z"})),i.createElement("g",{clipPath:"url(#a)"},i.createElement("g",{fill:"#1035bc"},i.createElement("path",{d:"m62.0647 6.453c.0371.19.0557.37367.0557.551 0 .16467-.0186.342-.0557.532l-2.3561-.019v6.384c0 .532.2412.798.7235.798h1.41c.0866.2153.1299.4307.1299.646s-.0124.3483-.0371.399c-.569.076-1.1564.114-1.7625.114-1.1997 0-1.7995-.5257-1.7995-1.577v-6.764l-1.3172.019c-.0371-.19-.0557-.36733-.0557-.532 0-.17733.0186-.361.0557-.551l1.3172.019v-1.995c0-.342.0494-.58267.1484-.722.0989-.152.2906-.228.5751-.228h.5009l.1113.114v2.85z"}),i.createElement("path",{d:"m71.0419 6.548-2.5416 8.911c-.47 1.634-.9709 2.7867-1.5027 3.458s-1.3296 1.007-2.3932 1.007c-.5442 0-1.0452-.0823-1.5028-.247-.0371-.3547.0619-.6967.2969-1.026.3834.1393.7915.209 1.2244.209.6555 0 1.1564-.228 1.5027-.684s.6617-1.1653.9462-2.128l.0556-.19c-.3215-.0253-.5689-.1013-.742-.228-.1608-.1267-.2969-.361-.4082-.703l-2.5973-8.36c.3834-.16467.6555-.247.8163-.247.3587 0 .5999.22167.7235.665l1.4657 4.769c.0494.152.3339 1.14.8534 2.964.0247.0887.0865.133.1855.133l2.2633-8.398c.1608-.05067.3711-.076.6308-.076.2721 0 .5009.038.6864.114z"}),i.createElement("path",{d:"m74.6067 15.155v3.762c0 .342-.0495.5827-.1484.722-.0989.152-.2968.228-.5937.228h-.5009l-.1113-.114v-13.243l.1113-.114h.4824c.2968 0 .4947.08233.5936.247.1114.152.167.40533.167.76v.095c.7421-.84867 1.6264-1.273 2.653-1.273 1.0513 0 1.8428.437 2.3746 1.311.5319.86133.7978 2.05834.7978 3.591 0 .7473-.099 1.4187-.2968 2.014-.1856.5953-.4391 1.102-.7607 1.52-.3092.4053-.6679.722-1.076.95-.4082.2153-.8287.323-1.2616.323-.8534 0-1.6635-.2597-2.4303-.779zm0-6.175v4.883c.7545.57 1.4656.855 2.1335.855s1.2183-.304 1.6512-.912c.4328-.608.6493-1.5263.6493-2.755 0-.608-.0557-1.13366-.167-1.577-.0989-.456-.235-.82967-.4081-1.121-.1732-.304-.3773-.52567-.6123-.665-.2226-.152-.4638-.228-.7235-.228-.4947 0-.9647.133-1.41.399-.4452.266-.8163.63967-1.1131 1.121z"}),i.createElement("path",{d:"m89.8263 11.545h-5.7512c.0619 2.1533.8596 3.23 2.3932 3.23.8411 0 1.7378-.266 2.6901-.798.2721.2533.4391.5763.5009.969-1.0142.7093-2.152 1.064-3.4136 1.064-.6431 0-1.1935-.1203-1.6511-.361-.4576-.2533-.8349-.5953-1.1317-1.026-.2845-.4433-.4947-.9627-.6308-1.558-.136-.5953-.204-1.2477-.204-1.957 0-.722.0803-1.38067.2411-1.976.1732-.59533.4205-1.10833.7421-1.539s.705-.76633 1.1503-1.007c.4576-.24067.977-.361 1.5583-.361.569 0 1.0761.10767 1.5213.323.4576.20267.8349.48767 1.1317.855.3092.35467.5442.78533.705 1.292.1608.494.2411 1.026.2411 1.596 0 .228-.0123.4497-.0371.665-.0123.2027-.0309.399-.0556.589zm-5.7512-1.083h4.4525v-.247c0-.874-.1793-1.577-.538-2.109s-.8967-.798-1.614-.798c-.705 0-1.2554.285-1.6512.855-.3834.57-.5998 1.33633-.6493 2.299z"}),i.createElement("path",{d:"m91.7359 15.117c.0123-.2787.0865-.5827.2226-.912.1484-.342.3154-.608.5009-.798.9771.5447 1.8367.817 2.5787.817.4082 0 .7359-.0823.9833-.247.2597-.1647.3896-.3863.3896-.665 0-.4433-.3339-.798-1.0018-1.064l-1.0389-.399c-1.5584-.5827-2.3376-1.5137-2.3376-2.793 0-.456.0804-.86133.2412-1.216.1731-.36733.4081-.67767.705-.931.3092-.266.674-.46867 1.0945-.608s.8905-.209 1.41-.209c.235 0 .4947.019.7792.057.2968.038.5937.095.8905.171.2968.06333.5813.13933.8534.228s.5071.18367.705.285c0 .31667-.0619.646-.1856.988-.1236.342-.2906.59533-.5009.76-.977-.44333-1.8243-.665-2.5416-.665-.3216 0-.5751.08233-.7606.247-.1856.152-.2783.35467-.2783.608 0 .39267.3092.703.9276.931l1.1317.418c.8163.2913 1.4223.6903 1.8181 1.197.3957.5067.5936 1.0957.5936 1.767 0 .8993-.3277 1.6213-.9832 2.166-.6555.532-1.5955.798-2.8199.798-1.1998 0-2.3253-.3103-3.3765-.931z"}),i.createElement("path",{d:"m107.996 11.868h-5.121c.037.6967.192 1.2477.464 1.653.284.3927.773.589 1.466.589.717 0 1.539-.2153 2.467-.646.359.38.587.8803.686 1.501-.989.722-2.176 1.083-3.562 1.083-1.311 0-2.306-.4117-2.987-1.235-.667-.836-1.001-2.071-1.001-3.705 0-.76.086-1.444.259-2.052.174-.62067.427-1.14633.761-1.577.334-.44333.742-.78533 1.224-1.026.483-.24067 1.033-.361 1.652-.361.63 0 1.187.10133 1.669.304.483.19.891.46867 1.225.836.334.35467.581.779.742 1.273.173.494.26 1.03233.26 1.615 0 .3167-.019.6207-.056.912-.037.2787-.087.5573-.148.836zm-3.581-3.99c-.965 0-1.484.74733-1.558 2.242h3.079v-.228c0-.608-.123-1.09567-.371-1.463-.247-.36733-.631-.551-1.15-.551z"}),i.createElement("path",{d:"m118.163 9.436v4.142c0 .8107.13 1.4123.39 1.805-.396.3547-.872.532-1.429.532-.532 0-.897-.1203-1.095-.361-.197-.2533-.296-.646-.296-1.178v-4.427c0-.57-.068-.969-.204-1.197-.137-.228-.39-.342-.761-.342-.656 0-1.268.304-1.837.912v6.46c-.185.038-.383.0633-.593.076-.198.0127-.402.019-.613.019-.21 0-.42-.0063-.63-.019-.198-.0127-.39-.038-.576-.076v-9.405l.112-.133h.927c.693 0 1.126.38 1.299 1.14.903-.798 1.8-1.197 2.69-1.197.891 0 1.546.29767 1.967.893.433.58267.649 1.368.649 2.356z"}),i.createElement("path",{d:"m120.109 15.117c.012-.2787.087-.5827.223-.912.148-.342.315-.608.501-.798.977.5447 1.836.817 2.578.817.408 0 .736-.0823.984-.247.259-.1647.389-.3863.389-.665 0-.4433-.334-.798-1.002-1.064l-1.039-.399c-1.558-.5827-2.337-1.5137-2.337-2.793 0-.456.08-.86133.241-1.216.173-.36733.408-.67767.705-.931.309-.266.674-.46867 1.095-.608.42-.13933.89-.209 1.41-.209.235 0 .494.019.779.057.297.038.593.095.89.171.297.06333.582.13933.854.228s.507.18367.705.285c0 .31667-.062.646-.186.988s-.291.59533-.501.76c-.977-.44333-1.824-.665-2.541-.665-.322 0-.576.08233-.761.247-.186.152-.278.35467-.278.608 0 .39267.309.703.927.931l1.132.418c.816.2913 1.422.6903 1.818 1.197s.594 1.0957.594 1.767c0 .8993-.328 1.6213-.984 2.166-.655.532-1.595.798-2.819.798-1.2 0-2.326-.3103-3.377-.931z"}),i.createElement("path",{d:"m136.369 11.868h-5.121c.037.6967.192 1.2477.464 1.653.285.3927.773.589 1.466.589.717 0 1.54-.2153 2.467-.646.359.38.588.8803.687 1.501-.99.722-2.177 1.083-3.562 1.083-1.311 0-2.307-.4117-2.987-1.235-.668-.836-1.002-2.071-1.002-3.705 0-.76.086-1.444.26-2.052.173-.62067.426-1.14633.76-1.577.334-.44333.742-.78533 1.225-1.026.482-.24067 1.032-.361 1.651-.361.631 0 1.187.10133 1.67.304.482.19.89.46867 1.224.836.334.35467.581.779.742 1.273.173.494.26 1.03233.26 1.615 0 .3167-.019.6207-.056.912-.037.2787-.086.5573-.148.836zm-3.581-3.99c-.965 0-1.484.74733-1.558 2.242h3.079v-.228c0-.608-.123-1.09567-.371-1.463-.247-.36733-.63-.551-1.15-.551z"}),i.createElement("path",{d:"m139.245 18.442v-17.385c.186-.038.396-.057.631-.057.247 0 .476.019.686.057v17.385c-.21.038-.439.057-.686.057-.235 0-.445-.019-.631-.057z"})),i.createElement("path",{d:"m2.648 14.604c.216.144.556.272 1.02.384s.872.168 1.224.168c.592 0 1.104-.092 1.536-.276.44-.184.772-.436.996-.756.232-.32.348-.688.348-1.104 0-.384-.08-.712-.24-.984-.16-.28-.396-.528-.708-.744-.304-.216-.708-.44-1.212-.672-.56-.256-.984-.468-1.272-.636s-.512-.352-.672-.552c-.152-.208-.228-.456-.228-.744 0-.384.156-.684.468-.9.32-.216.744-.324 1.272-.324.352 0 .648.036.888.108.248.072.52.176.816.312l.324-.732c-.28-.144-.604-.264-.972-.36-.36-.096-.732-.144-1.116-.144-.52 0-.98.092-1.38.276-.392.176-.696.42-.912.732-.208.312-.312.66-.312 1.044 0 .544.172 1.004.516 1.38.352.376.9.724 1.644 1.044.52.224.928.424 1.224.6.304.168.536.36.696.576.16.208.24.452.24.732 0 .392-.172.712-.516.96-.336.24-.816.36-1.44.36-.352 0-.712-.048-1.08-.144-.36-.104-.668-.22-.924-.348zm11.0963-2.364c0-.96-.204-1.736-.612-2.328-.4-.592-1.024-.888-1.872-.888-.56 0-1.048.132-1.46396.396-.408.256-.72.616-.936 1.08-.208.456-.312.98-.312 1.572 0 .936.26 1.684.78 2.244s1.27596.84 2.26796.84c.4 0 .764-.052 1.092-.156.328-.112.656-.26.984-.444l-.3-.696c-.36.176-.672.304-.936.384-.256.08-.54.12-.852.12-.688 0-1.2-.188-1.536-.564-.32796-.384-.50396-.904-.52796-1.56zm-4.19996-.648c.056-.544.224-.972.50396-1.284.288-.32.68-.48 1.176-.48.92 0 1.448.588 1.584 1.764zm5.84426-1.344c.288-.128.552-.224.792-.288.248-.072.544-.108.888-.108.44 0 .76.124.96.372.208.248.312.588.312 1.02v.324h-1.5c-.632 0-1.14.156-1.524.468s-.576.748-.576 1.308c0 .536.168.972.504 1.308.344.336.84.504 1.488.504.304 0 .616-.072.936-.216.32-.152.588-.328.804-.528l.12.588h.708v-4.02c0-.376-.096-.712-.288-1.008s-.46-.528-.804-.696-.736-.252-1.176-.252c-.264 0-.6.048-1.008.144-.4.096-.704.216-.912.36zm.228 3.096c0-.32.104-.588.312-.804.216-.224.512-.336.888-.336h1.536v1.32c-.216.256-.468.464-.756.624-.28.16-.576.24-.888.24-.36 0-.632-.104-.816-.312s-.276-.452-.276-.732zm6.0874-2.352c.272-.28.604-.524.996-.732.392-.216.748-.324 1.068-.324l-.228-.756c-.28 0-.604.1-.972.3s-.684.412-.948.636l-.3-.936h-.564v5.82h.948zm6.9986 2.952c-.28.144-.532.248-.756.312s-.512.096-.864.096c-.584 0-1.036-.212-1.356-.636s-.48-.976-.48-1.656c.008-.648.18-1.18.516-1.596.336-.424.792-.636 1.368-.636.336 0 .608.032.816.096.216.064.484.164.804.3l.288-.672c-.232-.152-.54-.276-.924-.372-.376-.104-.696-.156-.96-.156-.576 0-1.08.132-1.512.396-.432.256-.768.616-1.008 1.08-.232.456-.348.98-.348 1.572 0 .6.112 1.136.336 1.608.224.464.548.828.972 1.092.424.256.924.384 1.5.384.264 0 .588-.052.972-.156.384-.096.696-.22.936-.372zm4.6201-4.944c.616 0 1.072.188 1.368.564.304.368.456.864.456 1.488v3.936h-.948v-3.804c0-.432-.08-.768-.24-1.008s-.428-.36-.804-.36c-.288 0-.616.1-.984.3-.36.2-.68.452-.96.756v4.128h-.948v-8.352l.948-.12v3.396c.28-.272.612-.492.996-.66.392-.176.764-.264 1.116-.264zm8.5136.024c.864 0 1.54.284 2.028.852.496.56.744 1.304.744 2.232 0 .592-.116 1.12-.348 1.584-.224.456-.548.816-.972 1.08-.416.256-.908.384-1.476.384-.24 0-.496-.052-.768-.156-.264-.096-.512-.236-.744-.42l-.204.42h-.564v-8.352l.948-.12v2.94c.216-.144.444-.252.684-.324.24-.08.464-.12.672-.12zm0 5.328c.576 0 1.02-.208 1.332-.624s.472-.952.48-1.608c0-.688-.156-1.24-.468-1.656-.304-.424-.748-.636-1.332-.636-.288 0-.54.044-.756.132s-.42.224-.612.408v3.468c.192.168.396.296.612.384s.464.132.744.132zm5.0915 1.608c-.088.24-.224.42-.408.54-.176.128-.452.28-.828.456l.288.684c.424-.088.796-.26 1.116-.516.328-.256.56-.564.696-.924l2.568-7.02h-.96l-1.668 4.5-1.764-4.68-.84.36 2.16 5.604z",fill:"#000",fillOpacity:".25"})))))),S.items.length>0?i.createElement("main",null,S.items.map(((e,t)=>{let{title:r,url:a,summary:s,breadcrumbs:c}=e;return i.createElement("article",{key:t,className:R.searchResultItem},i.createElement("h2",{className:R.searchResultItemHeading},i.createElement(u.Z,{to:a,dangerouslySetInnerHTML:{__html:r}})),c.length>0&&i.createElement("nav",{"aria-label":"breadcrumbs"},i.createElement("ul",{className:(0,n.Z)("breadcrumbs",R.searchResultItemPath)},c.map(((e,t)=>i.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}}))))),s&&i.createElement("p",{className:R.searchResultItemSummary,dangerouslySetInnerHTML:{__html:s}}))}))):[j&&!S.loading&&i.createElement("p",{key:"no-results"},i.createElement(g.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!S.loading&&i.createElement("div",{key:"spinner",className:R.loadingSpinner})],S.hasMore&&i.createElement("div",{className:R.loader,ref:C},i.createElement(g.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}function E(){return i.createElement(d.FG,{className:"search-page-wrapper"},i.createElement(b,null))}},17325:(e,t,r)=>{"use strict";var i=r(64836);Object.defineProperty(t,"__esModule",{value:!0}),t.Configuration=void 0;var n=i(r(56690)),a=i(r(89728)),s=function(){function e(){var t,r,i,a,s,c,u,o,h,l,f,d,m,p,v=this,g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(0,n.default)(this,e),this.server=g.server||{nodes:[{host:"localhost",port:"8108",path:"",protocol:"http"}]},this.server.cacheSearchResultsForSeconds=null!==(t=this.server.cacheSearchResultsForSeconds)&&void 0!==t?t:120,this.additionalSearchParameters=null!==(r=g.additionalSearchParameters)&&void 0!==r?r:{},this.additionalSearchParameters.query_by=null!==(i=null!==(a=this.additionalSearchParameters.queryBy)&&void 0!==a?a:this.additionalSearchParameters.query_by)&&void 0!==i?i:"",this.additionalSearchParameters.preset=null!==(s=null!==(c=this.additionalSearchParameters.preset)&&void 0!==c?c:this.additionalSearchParameters.preset)&&void 0!==s?s:"",this.additionalSearchParameters.sort_by=null!==(u=null!==(o=this.additionalSearchParameters.sortBy)&&void 0!==o?o:this.additionalSearchParameters.sort_by)&&void 0!==u?u:"",this.additionalSearchParameters.highlight_full_fields=null!==(h=null!==(l=this.additionalSearchParameters.highlightFullFields)&&void 0!==l?l:this.additionalSearchParameters.highlight_full_fields)&&void 0!==h?h:this.additionalSearchParameters.query_by,this.geoLocationField=null!==(f=g.geoLocationField)&&void 0!==f?f:"_geoloc",this.facetableFieldsWithSpecialCharacters=null!==(d=g.facetableFieldsWithSpecialCharacters)&&void 0!==d?d:[],this.collectionSpecificSearchParameters=null!==(m=g.collectionSpecificSearchParameters)&&void 0!==m?m:{},Object.keys(this.collectionSpecificSearchParameters).forEach((function(e){var t,r,i,n,a,s,c=v.collectionSpecificSearchParameters[e];c.query_by=null!==(t=c.queryBy)&&void 0!==t?t:c.query_by,c.preset=null!==(r=c.preset)&&void 0!==r?r:c.preset,c.sort_by=null!==(i=c.sortBy)&&void 0!==i?i:c.sort_by,c.highlight_full_fields=null!==(n=null!==(a=null!==(s=c.highlightFullFields)&&void 0!==s?s:c.highlight_full_fields)&&void 0!==a?a:v.additionalSearchParameters.highlight_full_fields)&&void 0!==n?n:c.query_by,Object.keys(c).forEach((function(e){return void 0===c[e]?delete c[e]:{}}))})),this.renderingContent=g.renderingContent,this.flattenGroupedHits=null===(p=g.flattenGroupedHits)||void 0===p||p}return(0,a.default)(e,[{key:"validate",value:function(){if((this.additionalSearchParameters.queryBy||Object.values(this.collectionSpecificSearchParameters).some((function(e){return e.queryBy})))&&console.warn("[typesense-instantsearch-adapter] Please use snake_cased versions of parameters in additionalSearchParameters instead of camelCased parameters. For example: Use query_by instead of queryBy. camelCased parameters will be deprecated in a future version. We're making this change so that parameter names are identical to the ones sent to Typesense (which are all snake_cased), and to also keep the types for these parameters in sync with the types defined in typesense-js."),0===this.additionalSearchParameters.query_by.length&&0===this.additionalSearchParameters.preset.length&&(0===Object.keys(this.collectionSpecificSearchParameters).length||Object.values(this.collectionSpecificSearchParameters).some((function(e){return 0===(e.query_by||"").length&&0===(e.preset||"").length}))))throw new Error("[typesense-instantsearch-adapter] Missing parameter: One of additionalSearchParameters.query_by or additionalSearchParameters.preset needs to be set, or all collectionSpecificSearchParameters need to have either .query_by or .preset set.")}}]),e}();t.Configuration=s},53599:(e,t,r)=>{"use strict";var i=r(64836);Object.defineProperty(t,"__esModule",{value:!0}),t.FacetSearchResponseAdapter=void 0;var n=i(r(56690)),a=i(r(89728)),s=r(38399),c=function(){function e(t,r){(0,n.default)(this,e),this.typesenseResponse=t,this.instantsearchRequest=r}return(0,a.default)(e,[{key:"_adaptFacetHits",value:function(e){var t=this;return e.find((function(e){return e.field_name===t.instantsearchRequest.params.facetName})).counts.map((function(e){return{value:e.value,highlighted:t._adaptHighlightTag(e.highlighted,t.instantsearchRequest.params.highlightPreTag,t.instantsearchRequest.params.highlightPostTag),count:e.count}}))}},{key:"adapt",value:function(){return{facetHits:this._adaptFacetHits(this.typesenseResponse.facet_counts),exhaustiveFacetsCount:!0,processingTimeMS:this.typesenseResponse.search_time_ms}}}]),e}();t.FacetSearchResponseAdapter=c,Object.assign(c.prototype,s.utils)},44002:(e,t,r)=>{"use strict";var i=r(64836);Object.defineProperty(t,"__esModule",{value:!0}),t.SearchRequestAdapter=void 0;var n=i(r(64687)),a=i(r(17156)),s=i(r(27424)),c=i(r(56690)),u=i(r(89728)),o=function(){function e(t,r,i){(0,c.default)(this,e),this.instantsearchRequests=t,this.typesenseClient=r,this.configuration=i,this.additionalSearchParameters=i.additionalSearchParameters,this.collectionSpecificSearchParameters=i.collectionSpecificSearchParameters}var t;return(0,u.default)(e,[{key:"_adaptFacetFilters",value:function(e){var t=this,r="";return e?r=e.map((function(e){if(Array.isArray(e)){var r={};e.forEach((function(e){var i=t._parseFacetFilter(e),n=i.fieldName,a=i.fieldValue;r[n]=r[n]||[],r[n].push(a)})),Object.keys(r).length>1&&console.error("[Typesense-Instantsearch-Adapter] Typesense does not support cross-field ORs at the moment. The adapter could not OR values between these fields: ".concat(Object.keys(r).join(",")));var i=Object.keys(r)[0],n=r[i].reduce((function(e,r){return r.startsWith("-")&&!t._isNumber(r)?e[0].push(r.substring(1)):e[1].push(r),e}),[[],[]]),a=(0,s.default)(n,2),c=a[0],u=a[1],o=[];return u.length>0&&o.push("".concat(i,":=[").concat(u.map((function(e){return t._escapeFacetValue(e)})).join(","),"]")),c.length>0&&o.push("".concat(i,":!=[").concat(c.map((function(e){return t._escapeFacetValue(e)})).join(","),"]")),o.filter((function(e){return e})).join(" && ")}var h=t._parseFacetFilter(e),l=h.fieldName,f=h.fieldValue;return f.startsWith("-")&&!t._isNumber(f)?"".concat(l,":!=[").concat(t._escapeFacetValue(f.substring(1)),"]"):"".concat(l,":=[").concat(t._escapeFacetValue(f),"]")})).join(" && "):r}},{key:"_parseFacetFilter",value:function(e){var t,r,i,n,a;if((null===(t=this.configuration.facetableFieldsWithSpecialCharacters)||void 0===t?void 0:t.length)>0){var s=this.configuration.facetableFieldsWithSpecialCharacters.flat().map((function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}));if(r=new RegExp("^(".concat(s.join("|"),"):(.*)$")),null!=(i=e.match(r)))return{fieldName:n="".concat(i[1]),fieldValue:a="".concat(i[2])}}return r=this.constructor.DEFAULT_FACET_FILTER_STRING_MATCHING_REGEX,null==(i=e.match(r))?console.error("[Typesense-Instantsearch-Adapter] Parsing failed for a facet filter `".concat(e,"` with the Regex `").concat(r,"`. If you have field names with special characters, be sure to add them to a parameter called `facetableFieldsWithSpecialCharacters` when instantiating the adapter.")):(n="".concat(i[1]).concat(i[2]),a="".concat(i[3])),{fieldName:n,fieldValue:a}}},{key:"_escapeFacetValue",value:function(e){return"boolean"==typeof e||"true"===e||"false"===e||this._isNumber(e)?e:"`".concat(e,"`")}},{key:"_isNumber",value:function(e){return Number.isInteger(e%1)||!!(e%1)}},{key:"_adaptNumericFilters",value:function(e){var t=this,r="";if(!e)return r;var i={};e.forEach((function(e){var r=t._parseNumericFilter(e),n=r.fieldName,a=r.operator,s=r.fieldValue;i[n]=i[n]||{},i[n][a]=s}));var n=[];return Object.keys(i).forEach((function(e){null!=i[e]["<="]&&null!=i[e][">="]?n.push("".concat(e,":=[").concat(i[e][">="],"..").concat(i[e]["<="],"]")):null!=i[e]["<="]?n.push("".concat(e,":<=").concat(i[e]["<="])):null!=i[e][">="]?n.push("".concat(e,":>=").concat(i[e][">="])):null!=i[e]["="]?n.push("".concat(e,":=").concat(i[e]["="])):console.warn("[Typesense-Instantsearch-Adapter] Unsupported operator found ".concat(JSON.stringify(i[e])))})),r=n.join(" && ")}},{key:"_parseNumericFilter",value:function(e){var t,r,i,n,a,c;if((null===(t=this.configuration.facetableFieldsWithSpecialCharacters)||void 0===t?void 0:t.length)>0){var u=this.configuration.facetableFieldsWithSpecialCharacters.map((function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}));if(r=new RegExp("^(".concat(u.join("|"),")(<=|>=|>|<|=)(.*)$")),null!=(i=e.match(r))){var o=i,h=(0,s.default)(o,4);return{fieldName:n=h[1],operator:a=h[2],fieldValue:c=h[3]}}}if(r=this.constructor.DEFAULT_NUMERIC_FILTER_STRING_MATCHING_REGEX,null==(i=e.match(r)))console.error("[Typesense-Instantsearch-Adapter] Parsing failed for a numeric filter `".concat(e,"` with the Regex `").concat(r,"`. If you have field names with special characters, be sure to add them to a parameter called `facetableFieldsWithSpecialCharacters` when instantiating the adapter."));else{var l=i,f=(0,s.default)(l,4);n=f[1],a=f[2],c=f[3]}return{fieldName:n,operator:a,fieldValue:c}}},{key:"_adaptGeoFilter",value:function(e){var t=e.insideBoundingBox,r=e.aroundRadius,i=e.aroundLatLng,n=e.insidePolygon;if(t){var a,c,u,o;if(Array.isArray(t)){var h=t.flat(),l=(0,s.default)(h,4);a=l[0],c=l[1],u=l[2],o=l[3]}else{var f=t.split(","),d=(0,s.default)(f,4);a=d[0],c=d[1],u=d[2],o=d[3]}return"".concat(this.configuration.geoLocationField,":(").concat(a,", ").concat(c,", ").concat(a,", ").concat(o,", ").concat(u,", ").concat(o,", ").concat(u,", ").concat(c,")")}if(i||r){if(!r||"all"===r)throw new Error("[Typesense-Instantsearch-Adapter] In Typesense, geo-filtering around a lat/lng also requires a numerical radius. So the `aroundRadius` parameter is required when `aroundLatLng` is used. If you intend to just geo-sort around a lat/long, you want to use the sortBy InstantSearch widget (or a virtual sortBy custom widget).");var m="".concat(parseFloat(r)/1e3," km");return"".concat(this.configuration.geoLocationField,":(").concat(i,", ").concat(m,")")}if(n){var p=n;return Array.isArray(n)&&(p=n.flat().join(",")),"".concat(this.configuration.geoLocationField,":(").concat(p,")")}}},{key:"_adaptFilters",value:function(e){var t=[];return e.filters&&t.push(e.filters),t.push(this._adaptFacetFilters(e.facetFilters)),t.push(this._adaptNumericFilters(e.numericFilters)),t.push(this._adaptGeoFilter(e)),t.filter((function(e){return e&&""!==e})).join(" && ")}},{key:"_adaptIndexName",value:function(e){return e.match(this.constructor.INDEX_NAME_MATCHING_REGEX)[1]}},{key:"_adaptSortBy",value:function(e){return e.match(this.constructor.INDEX_NAME_MATCHING_REGEX)[3]}},{key:"_buildSearchParameters",value:function(e){for(var t=e.params,r=e.indexName,i=this._adaptIndexName(r),n={},a=0,c=Object.entries(this.additionalSearchParameters);a=|>|<|=)(.*)")}}]),e}();t.SearchRequestAdapter=o},28499:(e,t,r)=>{"use strict";var i=r(64836);t.Z=void 0;var n=i(r(64687)),a=i(r(17156)),s=i(r(56690)),c=i(r(89728)),u=r(17325),o=r(18871),h=r(44002),l=r(42559),f=r(53599),d=function(){function e(t){var r=this;(0,s.default)(this,e),this.updateConfiguration(t),this.searchClient={clearCache:function(){return r.clearCache()},search:function(e){return r.searchTypesenseAndAdapt(e)},searchForFacetValues:function(e){return r.searchTypesenseForFacetValuesAndAdapt(e)}}}var t,r,i;return(0,c.default)(e,[{key:"searchTypesenseAndAdapt",value:(i=(0,a.default)(n.default.mark((function e(t){var r,i,a=this;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._adaptAndPerformTypesenseRequest(t);case 3:return r=e.sent,i=r.results.map((function(e,i){return a._validateTypesenseResult(e),new l.SearchResponseAdapter(e,t[i],a.configuration,r.results).adapt()})),e.abrupt("return",{results:i});case 8:throw e.prev=8,e.t0=e.catch(0),console.error(e.t0),e.t0;case 12:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(e){return i.apply(this,arguments)})},{key:"searchTypesenseForFacetValuesAndAdapt",value:(r=(0,a.default)(n.default.mark((function e(t){var r,i,a=this;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._adaptAndPerformTypesenseRequest(t);case 3:return r=e.sent,i=r.results.map((function(e,r){return a._validateTypesenseResult(e),new f.FacetSearchResponseAdapter(e,t[r],a.configuration).adapt()})),e.abrupt("return",i);case 8:throw e.prev=8,e.t0=e.catch(0),console.error(e.t0),e.t0;case 12:case"end":return e.stop()}}),e,this,[[0,8]])}))),function(e){return r.apply(this,arguments)})},{key:"_adaptAndPerformTypesenseRequest",value:(t=(0,a.default)(n.default.mark((function e(t){var r,i;return n.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new h.SearchRequestAdapter(t,this.typesenseClient,this.configuration),e.next=3,r.request();case 3:return i=e.sent,e.abrupt("return",i);case 5:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"clearCache",value:function(){return this.typesenseClient=new o.SearchClient(this.configuration.server),this.searchClient}},{key:"updateConfiguration",value:function(e){return this.configuration=new u.Configuration(e),this.configuration.validate(),this.typesenseClient=new o.SearchClient(this.configuration.server),!0}},{key:"_validateTypesenseResult",value:function(e){if(e.error)throw new Error("".concat(e.code," - ").concat(e.error));if(!e.hits&&!e.grouped_hits)throw new Error("Did not find any hits. ".concat(e.code," - ").concat(e.error))}}]),e}();t.Z=d},17156:e=>{function t(e,t,r,i,n,a,s){try{var c=e[a](s),u=c.value}catch(o){return void r(o)}c.done?t(u):Promise.resolve(u).then(i,n)}e.exports=function(e){return function(){var r=this,i=arguments;return new Promise((function(n,a){var s=e.apply(r,i);function c(e){t(s,n,a,c,u,"next",e)}function u(e){t(s,n,a,c,u,"throw",e)}c(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/44eb4aec.a24387e7.js b/packages/noco-docs/dist/assets/js/44eb4aec.a24387e7.js new file mode 100644 index 0000000000..3958add682 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/44eb4aec.a24387e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9693],{36718:e=>{e.exports=JSON.parse('{"label":"Share base","permalink":"/tags/share-base","allTagsPath":"/tags","count":1,"items":[{"id":"bases/share-base","title":"Share base","description":"Procedures to share a base & generating embedded iframe","permalink":"/bases/share-base"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/458ed5bd.2b599050.js b/packages/noco-docs/dist/assets/js/458ed5bd.2b599050.js new file mode 100644 index 0000000000..68576b5fb8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/458ed5bd.2b599050.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2237],{61774:e=>{e.exports=JSON.parse('{"label":"Dashboard","permalink":"/tags/dashboard","allTagsPath":"/tags","count":1,"items":[{"id":"bases/base-overview","title":"Base overview","description":"This article explains the concept of bases in NocoDB.","permalink":"/bases/base-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/45c1aab2.6b478386.js b/packages/noco-docs/dist/assets/js/45c1aab2.6b478386.js new file mode 100644 index 0000000000..911bbfdbba --- /dev/null +++ b/packages/noco-docs/dist/assets/js/45c1aab2.6b478386.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4304],{70005:e=>{e.exports=JSON.parse('{"label":"Email","permalink":"/tags/email","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/text-based/email","title":"Email","description":"This article explains how to create & work with an Email field.","permalink":"/fields/field-types/text-based/email"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/468275e6.fec8c4ba.js b/packages/noco-docs/dist/assets/js/468275e6.fec8c4ba.js new file mode 100644 index 0000000000..a448d9f27b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/468275e6.fec8c4ba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6844],{29968:a=>{a.exports=JSON.parse('{"label":"MySQL","permalink":"/tags/my-sql","allTagsPath":"/tags","count":2,"items":[{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","permalink":"/data-sources/connect-to-data-source"},{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","permalink":"/data-sources/sync-with-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4bab5100.4d7693a9.js b/packages/noco-docs/dist/assets/js/4bab5100.4d7693a9.js new file mode 100644 index 0000000000..09d3ec1180 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4bab5100.4d7693a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5207],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>d});var r=t(67294);function o(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function n(e){for(var a=1;a=0||(o[t]=e[t]);return o}(e,a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=r.createContext({}),b=function(e){var a=r.useContext(i),t=a;return e&&(t="function"==typeof e?e(a):n(n({},a),e)),t},c=function(e){var a=b(e.components);return r.createElement(i.Provider,{value:a},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(e,a){var t=e.components,o=e.mdxType,s=e.originalType,i=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),p=b(t),u=o,d=p["".concat(i,".").concat(u)]||p[u]||m[u]||s;return t?r.createElement(d,n(n({ref:a},c),{},{components:t})):r.createElement(d,n({ref:a},c))}));function d(e,a){var t=arguments,o=a&&a.mdxType;if("string"==typeof e||o){var s=t.length,n=new Array(s);n[0]=u;var l={};for(var i in a)hasOwnProperty.call(a,i)&&(l[i]=a[i]);l.originalType=e,l[p]="string"==typeof e?e:o,n[1]=l;for(var b=2;b{t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>n,default:()=>m,frontMatter:()=>s,metadata:()=>l,toc:()=>b});var r=t(87462),o=(t(67294),t(3905));const s={title:"Base collaboration",description:"Invite team members to work on a base",tags:["Bases","Collaboration","Members","Invite","Roles","Permissions"],keywords:["NocoDB base","base collaboration"]},n=void 0,l={unversionedId:"bases/base-collaboration",id:"bases/base-collaboration",title:"Base collaboration",description:"Invite team members to work on a base",source:"@site/docs/040.bases/050.base-collaboration.md",sourceDirName:"040.bases",slug:"/bases/base-collaboration",permalink:"/bases/base-collaboration",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/050.base-collaboration.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Members",permalink:"/tags/members"},{label:"Invite",permalink:"/tags/invite"},{label:"Roles",permalink:"/tags/roles"},{label:"Permissions",permalink:"/tags/permissions"}],version:"current",sidebarPosition:50,frontMatter:{title:"Base collaboration",description:"Invite team members to work on a base",tags:["Bases","Collaboration","Members","Invite","Roles","Permissions"],keywords:["NocoDB base","base collaboration"]},sidebar:"tutorialSidebar",previous:{title:"Import Airtable to NocoDB",permalink:"/bases/import-base-from-airtable"},next:{title:"Share base",permalink:"/bases/share-base"}},i={},b=[{value:"Related articles",id:"related-articles",level:2}],c={toc:b},p="wrapper";function m(e){let{components:a,...s}=e;return(0,o.kt)(p,(0,r.Z)({},c,s,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"A member added to a workspace will carry his assigned role specific permissions to all the base with in workspace. To override member permissions to your base, please follow steps outlined below:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Go to the left sidebar and select ",(0,o.kt)("inlineCode",{parentName:"li"},"Base name")," to access the ",(0,o.kt)("inlineCode",{parentName:"li"},"Base Dashboard.")),(0,o.kt)("li",{parentName:"ol"},"Click on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,o.kt)("li",{parentName:"ol"},"Use the dropdown menu to specify the access permissions for the member you wish to collaborate."),(0,o.kt)("li",{parentName:"ol"},"Finalize the process by assigning the desired role to the user.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:t(54861).Z,width:"2878",height:"1408"})),(0,o.kt)("p",null,"More details about roles & permissions can be found ",(0,o.kt)("a",{parentName:"p",href:"/roles-and-permissions/roles-permissions-overview"},"here"),"."),(0,o.kt)("h2",{id:"related-articles"},"Related articles"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/create-base"},"Create an empty base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}m.isMDXComponent=!0},54861:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/base-collaboration-7c992951b09e76dec15cd8d15c04fece.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4c6b0ee7.ed39b25f.js b/packages/noco-docs/dist/assets/js/4c6b0ee7.ed39b25f.js new file mode 100644 index 0000000000..45621f4965 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4c6b0ee7.ed39b25f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6325],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>k});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var d=a.createContext({}),p=function(t){var e=a.useContext(d),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},m=function(t){var e=p(t.components);return a.createElement(d.Provider,{value:e},t.children)},N="mdxType",s={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},u=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,d=t.parentName,m=o(t,["components","mdxType","originalType","parentName"]),N=p(n),u=r,k=N["".concat(d,".").concat(u)]||N[u]||s[u]||l;return n?a.createElement(k,i(i({ref:e},m),{},{components:n})):a.createElement(k,i({ref:e},m))}));function k(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=u;var o={};for(var d in e)hasOwnProperty.call(e,d)&&(o[d]=e[d]);o.originalType=t,o[N]="string"==typeof t?t:r,i[1]=o;for(var p=2;p{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const l={title:"Environment variables",description:"Environment Variables for NocoDB!",hide_table_of_contents:!0,tags:["Open Source"],keywords:["NocoDB environment variables","NocoDB env variables","NocoDB envs","NocoDB env"]},i=void 0,o={unversionedId:"getting-started/self-hosted/environment-variables",id:"getting-started/self-hosted/environment-variables",title:"Environment variables",description:"Environment Variables for NocoDB!",source:"@site/docs/020.getting-started/050.self-hosted/020.environment-variables.md",sourceDirName:"020.getting-started/050.self-hosted",slug:"/getting-started/self-hosted/environment-variables",permalink:"/getting-started/self-hosted/environment-variables",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/050.self-hosted/020.environment-variables.md",tags:[{label:"Open Source",permalink:"/tags/open-source"}],version:"current",sidebarPosition:20,frontMatter:{title:"Environment variables",description:"Environment Variables for NocoDB!",hide_table_of_contents:!0,tags:["Open Source"],keywords:["NocoDB environment variables","NocoDB env variables","NocoDB envs","NocoDB env"]},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/getting-started/self-hosted/installation"},next:{title:"Upgrading",permalink:"/getting-started/self-hosted/upgrading"}},d={},p=[],m={toc:p},N="wrapper";function s(t){let{components:e,...n}=t;return(0,r.kt)(N,(0,a.Z)({},m,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"For production use-cases, it is ",(0,r.kt)("strong",{parentName:"p"},"recommended")," to configure "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_DB"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_AUTH_JWT_SECRET"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_PUBLIC_URL"),", "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NC_REDIS_URL"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Variable"),(0,r.kt)("th",{parentName:"tr",align:null},"Comments"),(0,r.kt)("th",{parentName:"tr",align:null},"If absent"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,r.kt)("td",{parentName:"tr",align:null},"See our example database URLs ",(0,r.kt)("a",{parentName:"td",href:"https://github.com/nocodb/nocodb#docker"},"here"),"."),(0,r.kt)("td",{parentName:"tr",align:null},"A local SQLite will be created in root folder if ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not provided")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB_JSON"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," and value should be valid knex connection JSON"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB_JSON_FILE"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," and value should be a valid path to knex connection JSON"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DATABASE_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," and value should be in JDBC URL format"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DATABASE_URL_FILE"),(0,r.kt)("td",{parentName:"tr",align:null},"Can be used instead of ",(0,r.kt)("inlineCode",{parentName:"td"},"DATABASE_URL")," and value should be a valid path to file containing JDBC URL format."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_AUTH_JWT_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"JWT secret used for auth and storing other secrets"),(0,r.kt)("td",{parentName:"tr",align:null},"A random secret will be generated")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"PORT"),(0,r.kt)("td",{parentName:"tr",align:null},"For setting app running port"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"8080"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_DEFAULT"),(0,r.kt)("td",{parentName:"tr",align:null},"Pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"25")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_MAX"),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum allowed pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"1000")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"DB_QUERY_LIMIT_MIN"),(0,r.kt)("td",{parentName:"tr",align:null},"Minimum allowed pagination limit"),(0,r.kt)("td",{parentName:"tr",align:null},"1")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_TOOL_DIR"),(0,r.kt)("td",{parentName:"tr",align:null},"App directory to keep metadata and app related files"),(0,r.kt)("td",{parentName:"tr",align:null},"Defaults to current working directory. In docker maps to ",(0,r.kt)("inlineCode",{parentName:"td"},"/usr/app/data/")," for mounting volume.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_PUBLIC_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Used for sending Email invitations"),(0,r.kt)("td",{parentName:"tr",align:null},"Best guess from http request params")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_JWT_EXPIRES_IN"),(0,r.kt)("td",{parentName:"tr",align:null},"JWT token expiry time"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"10h"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_CONNECT_TO_EXTERNAL_DB_DISABLED"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable Project creation with external database"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_INVITE_ONLY_SIGNUP"),(0,r.kt)("td",{parentName:"tr",align:null},"Removed since version 0.99.0 and now it's recommended to use ",(0,r.kt)("a",{parentName:"td",href:"/account-settings/oss-specific-details#enable--disable-signup"},"super admin settings menu"),". Allow users to signup only via invite URL, value should be any non-empty string."),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NUXT_PUBLIC_NC_BACKEND_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom Backend URL"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"http://localhost:8080")," will be used")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_REQUEST_BODY_SIZE"),(0,r.kt)("td",{parentName:"tr",align:null},"Request body size ",(0,r.kt)("a",{parentName:"td",href:"https://expressjs.com/en/resources/middleware/body-parser.html#limit"},"limit")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"1048576"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_EXPORT_MAX_TIMEOUT"),(0,r.kt)("td",{parentName:"tr",align:null},"After NC_EXPORT_MAX_TIMEOUT, CSV gets downloaded in batches"),(0,r.kt)("td",{parentName:"tr",align:null},"Default value 5000(in millisecond) will be used")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_TELE"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable telemetry"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DASHBOARD_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom dashboard URL path"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"/dashboard"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_GOOGLE_CLIENT_ID"),(0,r.kt)("td",{parentName:"tr",align:null},"Google client ID to enable Google authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_GOOGLE_CLIENT_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"Google client secret to enable Google authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MIGRATIONS_DISABLED"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable NocoDB migration"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MIN"),(0,r.kt)("td",{parentName:"tr",align:null},"If set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SENTRY_DSN"),(0,r.kt)("td",{parentName:"tr",align:null},"For Sentry monitoring"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_REDIS_URL"),(0,r.kt)("td",{parentName:"tr",align:null},"Custom Redis URL. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"redis://:authpassword@127.0.0.1:6380/4")),(0,r.kt)("td",{parentName:"tr",align:null},"Meta data will be stored in memory")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_ERR_REPORT"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable error reporting"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_CACHE"),(0,r.kt)("td",{parentName:"tr",align:null},"To be used only while debugging. On setting this to ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," - meta data be fetched from db instead of redis/cache."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_ACCESS_KEY_ID"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 access key id"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_SECRET_ACCESS_KEY"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 secret access key"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_BUCKET"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 bucket"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"AWS_BUCKET_PATH"),(0,r.kt)("td",{parentName:"tr",align:null},"For Litestream - S3 bucket path (like folder within S3 bucket)"),(0,r.kt)("td",{parentName:"tr",align:null},"If Litestream is configured and ",(0,r.kt)("inlineCode",{parentName:"td"},"NC_DB")," is not present. SQLite gets backed up to S3")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_FROM"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - Email sender address"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_HOST"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - SMTP host value"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_PORT"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin - SMTP port value"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_USERNAME"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - SMTP username value for authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_PASSWORD"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - SMTP password value for authentication"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_SECURE"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - To enable secure set value as ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," any other value treated as false"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SMTP_IGNORE_TLS"),(0,r.kt)("td",{parentName:"tr",align:null},"For SMTP plugin (Optional) - To ignore tls set value as ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," any other value treated as false. For more info visit ",(0,r.kt)("a",{parentName:"td",href:"https://nodemailer.com/smtp/"},"https://nodemailer.com/smtp/")),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_BUCKET_NAME"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS S3 bucket name"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_REGION"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS S3 region"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_ACCESS_KEY"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS access key credential for accessing resource"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_S3_ACCESS_SECRET"),(0,r.kt)("td",{parentName:"tr",align:null},"For S3 storage plugin - AWS access secret credential for accessing resource"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ADMIN_EMAIL"),(0,r.kt)("td",{parentName:"tr",align:null},"For updating/creating super admin with provided email and password"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ATTACHMENT_FIELD_SIZE"),(0,r.kt)("td",{parentName:"tr",align:null},"For setting the attachment field size(in Bytes)"),(0,r.kt)("td",{parentName:"tr",align:null},"Defaults to 20MB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ADMIN_PASSWORD"),(0,r.kt)("td",{parentName:"tr",align:null},"For updating/creating super admin with provided email and password. Your password should have at least 8 letters with one uppercase, one number and one special letter(Allowed special chars $&+,:;=?@#","|","'.^*()%!_-\" )"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NODE_OPTIONS"),(0,r.kt)("td",{parentName:"tr",align:null},"For passing Node.js ",(0,r.kt)("a",{parentName:"td",href:"https://nodejs.org/api/cli.html#node_optionsoptions"},"options")," to instance"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_MINIMAL_DBS"),(0,r.kt)("td",{parentName:"tr",align:null},"Create a new SQLite file for each project. All the db files are stored in ",(0,r.kt)("inlineCode",{parentName:"td"},"nc_minimal_dbs")," folder in current working directory. (This option restricts project creation on external sources)"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_DISABLE_AUDIT"),(0,r.kt)("td",{parentName:"tr",align:null},"Disable Audit Log"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_AUTOMATION_LOG_LEVEL"),(0,r.kt)("td",{parentName:"tr",align:null},"Possible Values: ",(0,r.kt)("inlineCode",{parentName:"td"},"OFF"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ERROR"),", ",(0,r.kt)("inlineCode",{parentName:"td"},"ALL"),". See ",(0,r.kt)("a",{parentName:"td",href:"/automation/webhook/create-webhook#call-log"},"Webhooks")," for details."),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OFF"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_SECURE_ATTACHMENTS"),(0,r.kt)("td",{parentName:"tr",align:null},"Allow accessing attachments only through pre-signed URLs. To enable secure set value as ",(0,r.kt)("inlineCode",{parentName:"td"},"true")," any other value treated as false. (\u26a0 this will make existing links inaccessible \u26a0)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"false"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NC_ATTACHMENT_EXPIRE_SECONDS"),(0,r.kt)("td",{parentName:"tr",align:null},"How many seconds before expiring pre-signed attachment URLs. (Attachments will expire in at least set seconds and at most 10 minutes after set time)"),(0,r.kt)("td",{parentName:"tr",align:null},"7200 (2 hours)")))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4cd0de40.fe98f46b.js b/packages/noco-docs/dist/assets/js/4cd0de40.fe98f46b.js new file mode 100644 index 0000000000..a3c0416138 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4cd0de40.fe98f46b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1730],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var a=r(67294);function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(l[r]=e[r]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r])}return l}var d=a.createContext({}),s=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(d.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var r=e.components,l=e.mdxType,o=e.originalType,d=e.parentName,p=n(e,["components","mdxType","originalType","parentName"]),c=s(r),f=l,m=c["".concat(d,".").concat(f)]||c[f]||u[f]||o;return r?a.createElement(m,i(i({ref:t},p),{},{components:r})):a.createElement(m,i({ref:t},p))}));function m(e,t){var r=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var o=r.length,i=new Array(o);i[0]=f;var n={};for(var d in t)hasOwnProperty.call(t,d)&&(n[d]=t[d]);n.originalType=e,n[c]="string"==typeof e?e:l,i[1]=n;for(var s=2;s{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>s});var a=r(87462),l=(r(67294),r(3905));const o={title:"Barcode",description:"This article explains how to create & work with a Barcode field.",tags:["Fields","Field types","Custom types","Barcode"],keywords:["Fields","Field types","Custom types","Barcode","Create barcode field"]},i=void 0,n={unversionedId:"fields/field-types/custom-types/barcode",id:"fields/field-types/custom-types/barcode",title:"Barcode",description:"This article explains how to create & work with a Barcode field.",source:"@site/docs/070.fields/040.field-types/050.custom-types/050.barcode.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/barcode",permalink:"/fields/field-types/custom-types/barcode",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/050.barcode.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Barcode",permalink:"/tags/barcode"}],version:"current",sidebarPosition:50,frontMatter:{title:"Barcode",description:"This article explains how to create & work with a Barcode field.",tags:["Fields","Field types","Custom types","Barcode"],keywords:["Fields","Field types","Custom types","Barcode","Create barcode field"]},sidebar:"tutorialSidebar",previous:{title:"QR code",permalink:"/fields/field-types/custom-types/QR-code"},next:{title:"Geometry",permalink:"/fields/field-types/custom-types/geometry"}},d={},s=[{value:"Create a barcode field",id:"create-a-barcode-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Supported barcode types",id:"supported-barcode-types",level:3},{value:"Related fields",id:"related-fields",level:2}],p={toc:s},c="wrapper";function u(e){let{components:t,...o}=e;return(0,l.kt)(c,(0,a.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Barcode")," is a custom field type that allows you to generate a barcode from a string value. This is useful for generating barcodes for things like URLs, phone numbers, or other data that can be represented as a string."),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:r(53726).Z,width:"2878",height:"1294"})),(0,l.kt)("p",null,"The following field types are supported for the for reference field:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Formula"),(0,l.kt)("li",{parentName:"ul"},"Single Line Text"),(0,l.kt)("li",{parentName:"ul"},"Long Text"),(0,l.kt)("li",{parentName:"ul"},"Phone Number"),(0,l.kt)("li",{parentName:"ul"},"URL"),(0,l.kt)("li",{parentName:"ul"},"Email")),(0,l.kt)("h2",{id:"create-a-barcode-field"},"Create a barcode field"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,l.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,l.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,l.kt)("li",{parentName:"ol"},"Select the field type as ",(0,l.kt)("inlineCode",{parentName:"li"},"Barcode")," from the dropdown."),(0,l.kt)("li",{parentName:"ol"},"Select the field to be used as the source for the barcode."),(0,l.kt)("li",{parentName:"ol"},"Select the barcode type from the dropdown."),(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,l.kt)("h3",{id:"cell-display"},"Cell display"),(0,l.kt)("p",null,"Cell displays the barcode generated from the source field. Click on the cell to open enlarged view of the QR code."),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:r(35997).Z,width:"948",height:"546"}),(0,l.kt)("br",{parentName:"p"}),"\n",(0,l.kt)("img",{alt:"image",src:r(81022).Z,width:"946",height:"386"})," "),(0,l.kt)("h3",{id:"supported-barcode-types"},"Supported barcode types"),(0,l.kt)("p",null,"NocoDB supports the following barcode types for the barcode field type."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"CODE128 "),(0,l.kt)("li",{parentName:"ul"},"EAN"),(0,l.kt)("li",{parentName:"ul"},"EAN-13"),(0,l.kt)("li",{parentName:"ul"},"EAN-8"),(0,l.kt)("li",{parentName:"ul"},"EAN-5"),(0,l.kt)("li",{parentName:"ul"},"EAN-2"),(0,l.kt)("li",{parentName:"ul"},"UPC (A)"),(0,l.kt)("li",{parentName:"ul"},"CODE39"),(0,l.kt)("li",{parentName:"ul"},"ITF-14"),(0,l.kt)("li",{parentName:"ul"},"MSI"),(0,l.kt)("li",{parentName:"ul"},"Pharma code"),(0,l.kt)("li",{parentName:"ul"},"Coda bar")),(0,l.kt)("h2",{id:"related-fields"},"Related fields"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/custom-types/QR-code"},"QR code"))))}u.isMDXComponent=!0},35997:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/barcode-cell-5e6612ed1460a61d5e51629f7b068d35.png"},81022:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/barcode-expand-29f49619f7b7dd014841681482c8a8af.png"},53726:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/barcode-a4164f41826b6ad850b8672d09f0457c.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4ed1386c.bd3a0126.js b/packages/noco-docs/dist/assets/js/4ed1386c.bd3a0126.js new file mode 100644 index 0000000000..2eca97fc2b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4ed1386c.bd3a0126.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1753],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function i(e){for(var t=1;t=0||(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}return r}var c=n.createContext({}),s=function(e){var t=n.useContext(c),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var o=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(o),h=r,m=p["".concat(c,".").concat(h)]||p[h]||d[h]||a;return o?n.createElement(m,i(i({ref:t},u),{},{components:o})):n.createElement(m,i({ref:t},u))}));function m(e,t){var o=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=o.length,i=new Array(a);i[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var s=2;s{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=o(87462),r=(o(67294),o(3905));const a={title:"FAQs",description:"General FAQs"},i=void 0,l={unversionedId:"FAQs",id:"version-0.109.7/FAQs",title:"FAQs",description:"General FAQs",source:"@site/versioned_docs/version-0.109.7/060.FAQs.md",sourceDirName:".",slug:"/FAQs",permalink:"/0.109.7/FAQs",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/060.FAQs.md",tags:[],version:"0.109.7",sidebarPosition:60,frontMatter:{title:"FAQs",description:"General FAQs"},sidebar:"tutorialSidebar",previous:{title:"i18n translation",permalink:"/0.109.7/engineering/translation"}},c={},s=[{value:"How to upgrade NocoDB ?",id:"how-to-upgrade-nocodb-",level:2},{value:"How to export CSV from the grid view ?",id:"how-to-export-csv-from-the-grid-view-",level:2},{value:"How to share the project with read only access ?",id:"how-to-share-the-project-with-read-only-access-",level:2},{value:"How to check my current NocoDB version ?",id:"how-to-check-my-current-nocodb-version-",level:2},{value:"How to check my Project info ?",id:"how-to-check-my-project-info-",level:2},{value:"What is available in free version ?",id:"what-is-available-in-free-version-",level:2},{value:"What is the difference between Auth Token and API Token ?",id:"what-is-the-difference-between-auth-token-and-api-token-",level:2},{value:"Do we plan to have an Enterprise Edition?",id:"do-we-plan-to-have-an-enterprise-edition",level:2},{value:"How do we decide if a feature is Enterprise or not ?",id:"how-do-we-decide-if-a-feature-is-enterprise-or-not-",level:2},{value:"What are the official socials for NocoDB?",id:"what-are-the-official-socials-for-nocodb",level:2},{value:"Is NocoDB available on the cloud?",id:"is-nocodb-available-on-the-cloud",level:2}],u={toc:s},p="wrapper";function d(e){let{components:t,...o}=e;return(0,r.kt)(p,(0,n.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"how-to-upgrade-nocodb-"},"How to upgrade NocoDB ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Please see ",(0,r.kt)("a",{parentName:"li",href:"https://docs.nocodb.com/getting-started/upgrading"},"here")," ")),(0,r.kt)("h2",{id:"how-to-export-csv-from-the-grid-view-"},"How to export CSV from the grid view ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Available since ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/tag/0.81.1"},"0.81.1"))),(0,r.kt)("h2",{id:"how-to-share-the-project-with-read-only-access-"},"How to share the project with read only access ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Either you can invite by email with 'viewer' access control"),(0,r.kt)("li",{parentName:"ul"},"Share the base with publicly accessible link. Available since ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/releases/tag/0.82.0"},"0.82.0")," ")),(0,r.kt)("h2",{id:"how-to-check-my-current-nocodb-version-"},"How to check my current NocoDB version ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You can hover the NocoDB icon on the top left corner or check ",(0,r.kt)("inlineCode",{parentName:"li"},"PackageVersion")," in Project info.")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/192435277-1b1715b9-5885-4e15-861f-4f95bb60294b.png",alt:"image"})),(0,r.kt)("h2",{id:"how-to-check-my-project-info-"},"How to check my Project info ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You can click on top right icon and click ",(0,r.kt)("inlineCode",{parentName:"li"},"Copy Project Info"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/192435381-e01013b1-7f87-4d3f-b443-420e685f8c41.png",alt:"image"})),(0,r.kt)("p",null,"You should see the similar result as below."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Node: **v16.14.0**\nArch: **arm64**\nPlatform: **darwin**\nDocker: **false**\nDatabase: **mysql2**\nProjectOnRootDB: **true**\nRootDB: **mysql2**\nPackageVersion: **0.97.0**\n")),(0,r.kt)("h2",{id:"what-is-available-in-free-version-"},"What is available in free version ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/orgs/nocodb/projects/13"},"Detailed comparison of NocoDB's generous CE compared to others is here"),"."),(0,r.kt)("li",{parentName:"ul"},"NocoDB has just one version that is free & open source."),(0,r.kt)("li",{parentName:"ul"},"In it you will notice advanced features are all available for free.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"ACL"),(0,r.kt)("li",{parentName:"ul"},"Collaboration"),(0,r.kt)("li",{parentName:"ul"},"Advanced Views : Form View, Gallery View & Kanban View"),(0,r.kt)("li",{parentName:"ul"},"Share View"),(0,r.kt)("li",{parentName:"ul"},"Embed View "),(0,r.kt)("li",{parentName:"ul"},"Password protected View"),(0,r.kt)("li",{parentName:"ul"},"Automations"),(0,r.kt)("li",{parentName:"ul"},"API Token Support"))),(0,r.kt)("li",{parentName:"ul"},"And we would never move these features from free to an enterprise version of NocoDB."),(0,r.kt)("li",{parentName:"ul"},"There is no limitations to number of projects, rows or columns either.")),(0,r.kt)("h2",{id:"what-is-the-difference-between-auth-token-and-api-token-"},"What is the difference between Auth Token and API Token ?"),(0,r.kt)("p",null,"Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable ",(0,r.kt)("inlineCode",{parentName:"p"},"NC_JWT_EXPIRES_IN"),". If you are passing Auth Token, make sure that the header is called ",(0,r.kt)("inlineCode",{parentName:"p"},"xc-auth"),"."),(0,r.kt)("p",null,"API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called ",(0,r.kt)("inlineCode",{parentName:"p"},"xc-token"),"."),(0,r.kt)("h2",{id:"do-we-plan-to-have-an-enterprise-edition"},"Do we plan to have an Enterprise Edition?"),(0,r.kt)("p",null,"For features that make sense for enterprises like below - yes "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"SSO, SLA, Organisation wide reports and analytics, "),(0,r.kt)("li",{parentName:"ul"},"Advanced Audit or ACL, "),(0,r.kt)("li",{parentName:"ul"},"Bespoke implementations & integrations,"),(0,r.kt)("li",{parentName:"ul"},"A hosted solution.\n")),(0,r.kt)("p",null,"And increasing number of our customers are requesting it. "),(0,r.kt)("h2",{id:"how-do-we-decide-if-a-feature-is-enterprise-or-not-"},"How do we decide if a feature is Enterprise or not ?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Depends on the effort and whether the intended users are enterprises.")),(0,r.kt)("h2",{id:"what-are-the-official-socials-for-nocodb"},"What are the official socials for NocoDB?"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Youtube: ",(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/@nocodb"},"https://www.youtube.com/@nocodb")),(0,r.kt)("li",{parentName:"ul"},"Twitter: ",(0,r.kt)("a",{parentName:"li",href:"https://twitter.com/nocodb"},"https://twitter.com/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Discord: ",(0,r.kt)("a",{parentName:"li",href:"http://discord.nocodb.com/"},"http://discord.nocodb.com/")),(0,r.kt)("li",{parentName:"ul"},"GitHub: ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb"},"https://github.com/nocodb/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Community Forums: ",(0,r.kt)("a",{parentName:"li",href:"https://community.nocodb.com/"},"https://community.nocodb.com/")),(0,r.kt)("li",{parentName:"ul"},"LinkedIn: ",(0,r.kt)("a",{parentName:"li",href:"https://www.linkedin.com/company/nocodb"},"https://www.linkedin.com/company/nocodb")),(0,r.kt)("li",{parentName:"ul"},"Reddit: ",(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/NocoDB/"},"https://www.reddit.com/r/NocoDB/"))),(0,r.kt)("h2",{id:"is-nocodb-available-on-the-cloud"},"Is NocoDB available on the cloud?"),(0,r.kt)("p",null,"Soon! NocoDB is currently developing cloud infrastructure.\nTo join the upcoming FREE private beta program, ",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/forms/d/e/1FAIpQLSfKLe8Rcrq0uo2_jM5W1kbVBbzDiQ3IvlP8Iov61FTekVAvzA/viewform"},"fill out this form here")," and be the first to try it!"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4efb7b3c.be24ab7e.js b/packages/noco-docs/dist/assets/js/4efb7b3c.be24ab7e.js new file mode 100644 index 0000000000..ca8421e95f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4efb7b3c.be24ab7e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3755],{3905:(e,A,t)=>{t.d(A,{Zo:()=>C,kt:()=>u});var g=t(67294);function r(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function n(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(e);A&&(g=g.filter((function(A){return Object.getOwnPropertyDescriptor(e,A).enumerable}))),t.push.apply(t,g)}return t}function i(e){for(var A=1;A=0||(r[t]=e[t]);return r}(e,A);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(g=0;g=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var a=g.createContext({}),E=function(e){var A=g.useContext(a),t=A;return e&&(t="function"==typeof e?e(A):i(i({},A),e)),t},C=function(e){var A=E(e.components);return g.createElement(a.Provider,{value:A},e.children)},o="mdxType",c={inlineCode:"code",wrapper:function(e){var A=e.children;return g.createElement(g.Fragment,{},A)}},l=g.forwardRef((function(e,A){var t=e.components,r=e.mdxType,n=e.originalType,a=e.parentName,C=I(e,["components","mdxType","originalType","parentName"]),o=E(t),l=r,u=o["".concat(a,".").concat(l)]||o[l]||c[l]||n;return t?g.createElement(u,i(i({ref:A},C),{},{components:t})):g.createElement(u,i({ref:A},C))}));function u(e,A){var t=arguments,r=A&&A.mdxType;if("string"==typeof e||r){var n=t.length,i=new Array(n);i[0]=l;var I={};for(var a in A)hasOwnProperty.call(A,a)&&(I[a]=A[a]);I.originalType=e,I[o]="string"==typeof e?e:r,i[1]=I;for(var E=2;E{t.r(A),t.d(A,{assets:()=>a,contentTitle:()=>i,default:()=>c,frontMatter:()=>n,metadata:()=>I,toc:()=>E});var g=t(87462),r=(t(67294),t(3905));const n={title:"Architecture overview",description:"Simple overview of NocoDB architecture",tags:["Engineering"],hide_table_of_contents:!0},i=void 0,I={unversionedId:"engineering/architecture",id:"engineering/architecture",title:"Architecture overview",description:"Simple overview of NocoDB architecture",source:"@site/docs/150.engineering/010.architecture.md",sourceDirName:"150.engineering",slug:"/engineering/architecture",permalink:"/engineering/architecture",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/010.architecture.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:10,frontMatter:{title:"Architecture overview",description:"Simple overview of NocoDB architecture",tags:["Engineering"],hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"In Open Source",permalink:"/account-settings/oss-specific-details"},next:{title:"Repository structure",permalink:"/engineering/repository-structure"}},a={},E=[],C={toc:E},o="wrapper";function c(e){let{components:A,...n}=e;return(0,r.kt)(o,(0,g.Z)({},C,n,{components:A,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"By default, if ",(0,r.kt)("inlineCode",{parentName:"p"},"NC_DB")," is not specified, then SQLite will be used to store your metadata. We suggest users to separate the metadata and user data in different databases."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"image",src:t(19883).Z,width:"528",height:"615"})),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Project Type"),(0,r.kt)("th",{parentName:"tr",align:null},"Metadata stored in"),(0,r.kt)("th",{parentName:"tr",align:null},"Data stored in"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Create new project"),(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Create new project with External Database"),(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,r.kt)("td",{parentName:"tr",align:null},"External Database")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Create new project from Excel"),(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,r.kt)("td",{parentName:"tr",align:null},"NC_DB")))))}c.isMDXComponent=!0},19883:(e,A,t)=>{t.d(A,{Z:()=>g});const g="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAAJnCAMAAADx+ZrCAAAC91BMVEUAAABERERCRERCRERDREUyl///gAD/gABNTU1NTU1NTU1XYWxOTk5MTExNTU1MTExMTExNTU2AgIBNTU2AgIFBQUFNTU1NTU1UVFRNTU2AgIBMTExMTExNTU1NTU1MTExMTExLS0xKSkpLTExNTU1MTExNTU2AgIBMTExNTU0AAABOTk+AgICAgICAgIBLS0sAAACAgIBMTEyAgID/gAAAAACAgICAgIAAAACAgICAgICAgICAgIAzmf9MTEz/gABNTU2BgYH9gAMJgMEAAAD/gQEzmf8ymf+AgICAgIAzmP8bgdX/gAAymf//gAAAAACAgIAzmf8ymf8AAAAymf8AAAAAAACAgID/gABLS0v/gAABcLI0mv//gQFNTU00mf+AgID/gAAzmv+AgIAAAAD/gQD/gAD/gAD/gQAzmf8zmf+AgID/gAAymP//gQIAAAA0mv81mv8CcrIAAAAzmf8AbrAymf//gAD/gAAAAAD/fwAAbrAAAABDQ0X/fwD/gABDREUDcbMAb7Azmf8zmf8tlv9DREVDREWBgYGAgICAgIADcrMAcLFYjcFVjsgYGBn///8boeJDREX/gAAzmf9NTU2AgIAAbq//wICZzP8AAAD/mjT/v3/5/f//jBfW7P3x+f//jx54vP//o0ez2f//uXP/r1+93v9drv//5sz/y5b/nTr/lCeRyP//iA/M5v+g0P//9+3/tGf/qlT/hAir1f9Wq///4MD/27f/vHnE4v9zuf9IpP/q9v7/8uT/1av/0aL9/v/s9v+Mxv9ksv///Pn/zp3/xYr/woX/t23/oED/rFjk8v9Op///7Nn/p07C5/j/6dP/48aAwP9ptP9Dof//2LH/ly71+/+l0v89nv/c7/7/yJDg8P+HxP//9Om32/84m///795ttv//+fM3reb/06bS6f+Wy/9owexJtOiHzvEYm9xzxe3/3bvO6/levetTuOme1/Oo3PUhpOO04Pa74/YsqOWAy+8boOESkdIPi8x4yO5LJRe/AAAAkHRSTlMAQH+Av4A0gPvh6wMNtqho8sv6kg4TPx0H2/ZNJ/e/rtJxLV2FUzrs5oqcI4gYrDTEtZtysYvXzHQj8+HBvoFuRTa+8+vMsUhHPi0SoaBJQC6Vhl86C7OklHl47+zd1s1WVlRPKR0Sh/V6cF1AHuo2993c1qZuamZhUCspHuYlCtPFiGRhCaCNfWuPw4n44kKWY0T9AAAfcUlEQVR42uzdv4vacBjH8Ux26L/jfnBw23FzObjhhvY6HF1bOrT/wgOfRYgEQkggMQSMgcRFsyTGCIoOugiCiOP9DTW2nuau7fXHGb5pn9fcrW/U7zd57pFYsd68/li5uP5wcnn5/vritvLpzWeJ/Vc+XWz+929enVdPz67evcV3vLs6O62en796cfL++vaNxP5Vb25PXp09TMBRbVlrGf227g5G6cxWPORdVW+uP0rsn/Ly4/VN9R22VM1w28k8nN5Nhp0VPRY1l+NJsI57tU0j8rc+zs4vL15LrPxeX1yen2HLa7hzf0G/aditt2xsvTt99b7CvzFKrPLiWwt2q9Yd0p9bTeJ+qmCr+oF/V5TS7c0VACftx5MVPYtO0DNkbJye8NdHyXy+zGpQ3YCeW8fStk1cSKw03rx4C9i6T8fRDFsecHotsVJ4c/MW0AL6PfvDxTzuBpPxshn97F/3FOCMkyiDyhUwuvuFAsxuPE/a2fWDnF0/POYptpyOBq6ebBoxH/YxV4FXEhPd9VukPv3ccpoMZsjzHHXW0FquXteNltaYqY6HvNkgmS7pgAVU+cQhuBPAoB9r+pbbcHZnUaNf71nrqW8OFyt6bLUYmv40tHr1vrG7i3BS1/Kb9JWv4oxvMYX2CajT943X7ZGKLUXTYzOi3xOZsa4p2FJH7fU4+6hpoCoxgb34wedD4CrIeLIxv1vQn1vczQ3ZQ0ZxA1oAfCUhsisE9FDUNRwA9qj+57eVj++zRzYAx2jgUmLCOoFDD4wND4BcM+m5mTUZG2/5V4S4boEFHTINAI3ekI5j2GsAOK9ITEwVwKK9SQuAO6RjGrqchLgqgHd3eE+A/pKObdkH8F5iAqpAgWrSV3VA71AROjrwQmLiqUAewEsi2jCAORVlDpxLTDibIMhS0JgSWfCmVJypx98aAsqCoKEByImMkIoU4kxiosmC2AgGABwqlgM+aggnC2LLVCFTsWScSkww90GQAYWK5fDPSvHsg2gDJhVpwidPAe2DqAPygorTbHAQAjoMwobWpKI0R7A5CPEcBqHPYIdUjNDGTOcgxHMYRK2pAwOTjs8cAHqzxkGIJxcEUdAAtLhJx9SMNSANiDgIAeWD2AhTQOlPIzqOaNpXgDQk4iCE9CCI+1tLxQg79Nw6oaEAGAREHISgHgWRMesyAE9rr4f0XJbdtuYBSBOTiIMQVj6IvXEiI6OOakGT/s7K7w1sZFIrK4yDEFg+iJzOuq0pyNiGNVlG9Pui5cQyZsgoWnud3XtxEGLLB/FYJ0gGuxEsOx30kzgwF/RzCzOIk/4gtXcDX4Mk6FCGgxDeU0FsRRNLbzXUw7FORZ3JDW3UMtx+u97uu0ZrpDXkmaocDniqjZZuTSLKcBDlkA/iCZ1Jd54rIyfXwbw76dA3HESJvIfzKIinRc3OcmxO7qbd0Jr36r25FXandxNzvOw0I9rhIEqoAoz3QTwLDqLMKkCdg2CHQcDiINg+CBWIOQi2P2XUgZbJQbBdEDS24dXGHATb3UNEfQA2B8HuL6Z8VwEHwQ5uKhd28YM6/PfHxLO/unbhUbE8/jOm4snNZXSpSF2eyxBQLgjHp+JMHA5CQIdBzKDeUVHubGgchHhyj79HgL6gIix0QONThoByQdAUsK3jJ7GwbCDhY6eI8kHQUAMcN6BjClwHSH2+hxBSPoiNbguA3PbpOPy2DKDV5YspQeWD2BrXZwBst9uk59XsujYAuz7mm0ph5YPYCfSsCafRj8f0PMahnjoAZnrAV9ciyweR/2zfzVNMO/Q3FkFtpABfv4n4WYbg8kHkDbu7SR21lYT+MvrtMR0/TAYqMsqo3l3ywy3xPfka/jjuNzx8pcitfm896Tz5tv6612/JCr7yUn095KedJfFkEFtm/MeDOvGYH3+XyT6I2rMO6vR4UKecfieIvdV2UMd/MKjjbwd1VvyCTJkdBMFvTDEOgj1wAoWDYPklbBwEyy1h4yBYfgkbB8HyS9g4CLY/ZaRwEg6C7Y+dIdCYchBsFwSZKSCnHATbXUytejJ4tpMd3lQGClIqVspL2MTDS9jYj0f5Cl/CdiMxweyDqPESNpYPQi14CduMgxBP7vE3Cl3CBj5lCCgXBPWLWsLWAjQ+doooHwR1lYKWsDk9vocQ0oMgaKyr2yVsKzqO1XYJm6qbfDElpnwQmVWsAVCM+AhL2GJDAaDFK76pFNWjIDJmrXG0JWyNGi9hE1k+iL1xT3u2JWxNvzdQkdF6Y36WIbZ8EDnDsJ8690vYOvQnOvdL2JxUD4f8cEt4T7yGH03mxux+IGugz6fmgp62MKdzfXA/4iX3YzPip52l8DiIx1b+fCAr2PHUVBsNDFdvJz0rXk8DP5iuY6uXtHXXGIy0VPWwo8iD+STix9/l8VQQe9HQDxN3NFPwNGU2cpPQH0b8PkTZ/GoQ+TKC7uFHQu4DoxtsOuAXZEqrghlPbrEDV/A5CLZ3A5eDYHsfgTkHwfZeADoHwfY+AK0hB8HuXbwDjDEHwXY+nQOYcRBsn8QrntxiOa/PoFOxdA5CZBUoVCwFFYmJ66zwrXxnEhPYCVSfiuOrOJGYwF5WgZCKEoL3+grvFZBEVIQoAa/1LYFLQElWdGyrRAEuJSa+i1PAqR95cqvuAKcXEiuFiyrgtcJjNdEMWx5Q5RxK5LaKDc06wuSWpWGjeiuxUnl9coqNhmv5TXoeTd9yG9g4PXktsS/s3bGKwjAYwPFMdejW8V7ARadm6lIodCudi9ChQ2sH6WpxsLtr4BuFIhSs4uJiluJW66Dc4r3A4egznC0ETrgbjpuq32/ICyT8kwwh7RPElDXSM7++/++Hxis/p6xB44CgtkpGumWGrPGRlbvi71vErhTPfELT0kcJQa039TrUZY35seKHfH+5LU/F5283yuK0vF32+YFXxzlruLTjTQl6Jok0doyIPdik69Vim1W8zEteZdvFap1u2IPIcMYSZuFp+bY+GDoWNUw3CtnPwsg1DWo5w4Fu4+nxlciBP5FsL76vEeM++7FnSxM/kAl6eeqbShASZA26BCFB1UDDRCBB7gJgItD3QAAmAgmypiigKBpBqNaDWR/6M+gRhGp9QqAeERKAoC926yAHQRiIwvAsaYOlDQG7KKkKJhAXJhzAe7DhVu++KsQFi7p0ge87w5+ZRwyCGAQxCGIQxCCIQdAHg6ANBkEbDII2fhSExpuRVXjUkgYltB+pIA4vhayu6BjEv0gFkS8lzFG6uVPQhS+tNV6im3Q+m2gPQYJrVOkZxL4kL0SMMfgeE5r7CX07wPaIogBUQNZgFAencWYQ+/JtQ9RSA2iXl2FxuWXIFcbKIztW0DJMwaBkEE/27CZHVSAKoPAdFgUWEAJI+BHQNhgHJL0A4zZ64q5Or/cF9eW1aey8QU8k95uQOz+Bou6yPAvimKapL9LgyRSEz9XRI5U1hQiRdAY0iKX58QwhPXCeghDDvs/Oaw9f1lymIHKiLNQgluZZEG0cx86/4IiCkrhv2Jyw/kMQXulpEEvz0xli6CgkJkkHknwFUSZfgpANNLQaxLJ8yv9IA5Gg8uVRHohaGr26VhqE0iCUBqF+JYgVQFvJ903nYEQt3kwQjWvh+H3TaRG1eDNBZCKORMqijrvKw4aBi+wmF0sSFZncp+N7VOxE9m19OUtwGKzTn9AlmA8iJF4bGsN52nTu8FpWYjGWWu5TgxvIUkMLVUcTsxP1+uaDyIjzZDsWlNMnI0yqjkIso8SM98lwegv3IS5POKxwZfcm6vU9e0MkvgNuQZwHuAYhcqK7Tweg6A9MNqWBSINYgtkg/IJyS9y7WxCWbX8NIhdHdpuCbHsq2Hzg+vFc7cuwIRL1+maCaJsIG4RstoayJO4t5eoahPeO8W/Tuq7DD1Yjddeybdi96ZJrEWaCANPkEgwQc0gHkg5aY1KLB53cp7CGSyXhAM4fC7D6yViCT3nquP676Qzyr/vN++SPqUyq6yPNRS2BXl0rDUJpEEqDUBqE0iCUBqH+0SDUAw1CPdAg/rBLxwIAAAAAg/ytd8+hGGKEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghCD27dg1jSgO4PhbOnULmfIPdCldOjsJERQHxU1BcEsgkASTJVOSduryhB8RBzk5Du6Ww1vuhtMMubvRm1SoBoOSwQz+A0mXetJAXwtt2uqzz/f7DPcXfO939+D9GBgEYmAQiIFBIAYGgRgYBGJgEIiBQSAGBoEYGARiYBCIgUEgBgaBGBgEYmAQiIFBIAYG8Tdepw6SuUTpcv/V/mUpkUsepF4TJFMQr5OlD/t72Ux5N1Y8KhzCzw4LR8XYbjmT3dv/UEpiH5sbxEFir1wE1qQfOsG92vVrfle9D5ywPwFWsbyXOCBoo4JI5U4zsQIsOGrXf7DssdtURl6d/qzujZSmO7ath3kjDiwUYpnTXIrIbTOCSJayu0ew0O75mlKnf6auaH6vDQtHu9lSkkhrA4JIZAoQmRjdgevRv+e5g64xgUghkyByEjyIj6V0VEPYetBHdDlG+kMrjJpIlz4S+QgdRDJ9CABGTaHLptQMADhMy/ftEDiIZBoAAmtEV2NkBQAgXRLCBpErA8DdiK7S6A4AyjkiE1GDuAQAv0NXreMDwCWRiKBBZAHMa8rDtQmQJfIQM4g0wIDyMgBIE2kIGcQpDHXKjz6BUyILIYMowpjypEGRyELEIJIwpFzdDEGa06eIQcTAoHwZECMSeL/znlwtnmIpw5DyNZTjt3J7a+fN1ZudrW0ilixAk/LkynLyfLt1dXW19ZYI5hVAq0H5abQAXhEZbO/MgxBuQMyDCMFQKC+KAY4kQcxHhIADYh6E6UBfp3zofXBMWYLY3hFwQMyDqDVMgJ52Q1ftRusBmI2aLEGQtwIOiCgISt0AwLE8ukqe5QAELqXyBLH9TrwBsQhiLnp5+6q2qiY8Te1HY4hSQYNInZznqzzkz09ShD82iAVXBYBhy+7QZevYrSEAqC6logZxUY0/zR4rq/c4e4pXLwhvbBDsVTfomePR8mLQzR7MBdHVPFGDODuOzyr8zOLHZ4Q7Nohnt5YBkbBVcxv03zSaAzWESGBHhQkbxFn+S4WvL3neRbBBMLyxed+GiNO1p53P9M997kztrgOR9r059iilIgdxzKUHtohjwh8bBMtzrecVrGEYqL6luYpHf81TXM3y1SAcPi98Wa5HI2IHcRGv8Be/IOvBBsGqT21fNdrfr3W2Q8cIei21e+ebNdO/66qtXmA4Yfv7Bc+2ofr2tE4j4geRqs4q/M2qKcITG8RvXE/1AVMGg+lgoE+v6TcbEsRJvLIO8RPCExvES9UbXudWaTZdXbMHVs0a2JruNpvKbcdr1OmzDQvi/KmyDk+fCE9sEEuxqUHkZ5V1mOXJC2EQfFUfK+vwWCUvhEHwVa2sBwbxn8IgfoBBvAgGgUEwMAgMgoFBYBCMjQkCF3UwCEYaJpSvr+ydu4sTURSHp7GyCylk/gGbdUEExVexCKLYKAgWFgp22glWVnarqPwuXFZSDDNIYLYZkkYLkykmmzKBgLswu0NClhDcJIa8Hz4KZ2aT3c34jG7GzMz9muXeamE+7uPcc3IovcF5iKAJcYRSGW4S9VhdRgCFyMbgHrEsE2LOhXhLt6NwizfbtMSEmG8hIglKIxm4QSZCaYndMuZdCMiUbhU+YNZ8KGxRGmfXzvkXAvmSnSavYXZodpp/OubPOATQJkREhfwQDSbGgFRhoVbnXwhAtj5XtiDrmAW6XMhaysl+DUwBwuBXQoiGAN0UQhMNHYYXhACMiJVVm3xflHC4SMX3SSvnNmL4N1IJoG8LUZcg9AipqpraIeORBkK6AoZVqIQ0IXlDCJN3iuXEVnotKuJwMKJr6S3LBuWdr0PXECSUTSGqgAR0ugJ0oDYa2UIQEb0qhIaoo+cZIUxiO6vUYmNdkVP4F1LvIokktVjdifn9LQNCBaIpRA45Uodeh0qGqc5otCtEH/0qbNpeEsIkLyulDWqRfR0vxjJTN1DJxIrxUc1WMrEjZwLwuAWB5CGhkseQdIG2aYLJaLQrhIGvVUiDcg3oekuI0VpfWN3ey69PrG0WP6i/zdYvbq4l9rL1t9NmjWhQXjsh2FeISgMd0rKXC9LMDUcjW4gqMLDPEGWg7EEhbMR/KNQxfvf8vXT6KjfPnApPJwRpAJWv0HI6GkRDT8Jwf5RRgbx1y8hkBOge2zJcKdRZWuRDS9w8w4cWwlMJUQYqpA9ALZM2AJGMRxoAodEdxyFaXhfi8At1lk7yKysnubnmKR8ylZg6Ujlolh1/9vFOpNJVIvSl/YN9yw/2uHuAewe44uDqJEsTXJ/k7Pec+I7wJMfGHDU5bv6P/EI4kKFrV4nQF7YQi7cOsujg5HdcOHnByZnvOe3k/OnzTo47ODeCtwjxoV1WLEKLTIhZY24ZT4/zK/wzbr4xV4hz/DJbIWaOfai0lDjBzTOn+HPnlqc8Q5RbTIi/E8I+tC1zc8zREL98bLrn73oKEPpMCJ+m4Z86Nm0+hI5cT0ONCeFPIaZOkGlBJ6SWaZOKpElfSV3qqTkpRUhDau7P9JkQgRGiCwi5YZeUAQlo1QDkJDS70A7OMCECIwQZCgCEVhtiNYdcDUKddNCro3Fghm0ZARKCkGZPRyMHC6OGBiFlqDnU92fYGSJAQlQEw1QCQgdis1Jv1eztIQVdIPszHhDiIk3DXdI+re0sA2pfR78JrSOhvfv520CDjGa8IQRrwnZoW8ZXFRDEAWkLgNi1Pv/oCXQ04w0hWBO2QzxDDFrEplUmk5gz3olDsCZsrFBnQogka8LGhJi4ZVBXm7BRv94y/CME1lxswrbu22unj4SAvOFSE7atuH/jEH4SAoaSdaEJW1YRfRyY8pUQgB4tzbgJWymq+zpS6TMhTMRImjVhY0I4mrCtz6AJ23rcCMBbhi+FMMnbBdvjJmwq/gZ1rwnb1roSzQfjccuvQlho4w9qkky/VjZlMYXfkxLlTeV1Okl3WS1ERS04r51+FsJGMJf81Q06ZjubLllFncpOxKzYKsrvzAKuolnBFdlRrBLPUjq7TcdsrL7e/CAE7Pnb90LsFfdH44WEacZvMT1IFOLRWEbwVT4E66jzMzMcS4JzwcgIvkyQYT23fkJQM6ZYVz4HQReC9e10EHQhWGdfB0EXgvX+dhB4IbiHX4jbfHnI/TFMCLd5fNttI77cfsz9MUwI13n88JKb54iPlx5O4wMT4j/w/NWlzx/diFB9+vj50qvn3DQwIf4H1x49uf3KDW4/eeT2/cIphAJ3UbwoxF8RXgxznuMmTcJdkvQmFwwWQguc97hDZbiJTO9wwSDMr4Q8uETcp0lXu/Il6X0uGCyEVry4RBy9TGkUbhGl9DIXDL6xd8eqCkJxHMfPcqe2y516gR6g2fUcKBoMxyBoMxB08QWy3eGP0BDXoaEldNEhc6q1SQUxksTh+hj3ZFPQcqku6PEz+ARffshZ/nQgjEpOBOIB7KX+H5Z2xc76PjkQRiUnAiERIFrE+rvFiwhARIz4+mx3jE67khOBCAeQFKb+TmaRAHAEsaLb7iKj/FYSwQCZt3pXE+bKywAwOzncGKjCBAxU7vj6q/lODhRm5fmhJkEgJKkcUIfUscxXLYPlpAegOFVC7Kl4EFRfw1A65pvLSX/G6bLJj1DCWh8xqfpBUHMyHYxluMrcwN76+l/5WztwM7iSx4MpmSNW1SKIm97kAytQisK0sOkxJevn7Mf6Y7F//rbo4SW7SMMISgr+mPQQ22oURGkuzHhuBHeSnbsOvWBPG7GLfeCFa3eXwJ0Rx88EdmehxkHcSEQVh/wAc2NlJMNj8kgZc3jAD0WVsPj3yFQQd1p9qSeQiTaljQzFqTYhQk/qt1CD0SAaTRCNJojGL7t0TAAAAIAwyP6pvdcBMiAEmxCEEIQQhBCEEIQQhBCEEIQQhBCEEIQQhBCEEGfXXnYUBcIwDH/LKs6EABo5iTaRsDDxAoy30Zu5q/d+Jyi23emZzWwmNLwLkyp/a+MTJeg/5OVaWzwIQygFdGp/gen1rARM7SkEKION1pYCIvJGEF5EXBv6F4igPmEVYgO/JNTaUkBwHEFcaaSC6AVCck/sQo7SnkRrCwERNSYP6Hyuklz3MwgFXEO2lyCi09pSQHQEAV3DTlMvED3HkDGzglgOCPlsn58QbfsFRM0tJPHShFhriwExwP0awlVH8xlEbvBCjtIbVmuLAaELdKkh8uH2AlHFBl8hp6oy60XlokCkhk6dAyRf7kNEl83zPoSntWWA+FR+9qQhu7cCWEE82vX31rvYK4i1FcTackB4g6v/kTss4/JjdiBqZwKR0OlLFZzlgdWXimsmfc0HaIo/TJyM/tImCrSE5gYi46pHlz+A2Ov2DcQbx+8gqqCB4fuEg/5Wv4zfPeYGoiLXblvG+xHEEMdDEZc22TyeMr6OBqtpL/PL+K2wOOEmiaJgozp+d7w7iEwKSB4n3Se8IHLqXA5JtM00rYZLtD1KXVP+uqnA1wKaG4hoq42hMhQXdpa9YmKH/QNEHCmOsdPepiyD0rQNp0NPdKKWBT5AhMSPk27jxBHb4MvBOJSaVhXBiSw1NFDIOlpAMwORUylPDuctuwsRidS/FwHJA0RPbnrstNcShYcwH78QItrB4FkuqZ4gMuLppHEiTIo9WzmcFXOeVobrW9iFBHlCr4pUP7+ZgbgRyA2AEQQjhL2BJ4gdR3bY514M+N4bR5d7gyXVB4iQZDppBHE7wR2EdGU/rfrxse0Zq1WT6ec3MxBnYh2I22AE4cOQE2XhE8RgDCl22stvhyQiHN9uQ9dmt43F/QDhbtlNJ40TDof2DiJXQPZYednhuqV+J2jPt0IxrX5+MwOR4iikPpgRRNdT5did/QARY13stNeyPdSEO+K2or7iuC8QTRXheNNJ44TDzr+DsBeM+1htyjJ8xz9T7hsOiljCnYiZgVDDxjtBTH+h80qyGiqaCURP4GI17V2Ayk1PJLkPUaYXCDBVrumkcWIPjTGpg4W9plVYwq9C4QkC11vGn2nmBiLkIA0bvco9TX3b8873wdSTvMLV98aTpgkv//zaaeWeU40VqXTgoAU0NxCutfo/2a2W0NxAqNh7+h95+0FLaHYg1r60glj7zS4dCwAAAAAM8rfePYdiaIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYISIfbtZURyIwjBc+VlOI4jNDLYgHdFejIzQfTV9MYGsdH8WXu8kDgn5XAypwTDU6fdZiNT65aSOEgiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgsB8PtYf4Xr7BFqr5frt+rZergLQOS6v1+vyGICb1boNggGB0YhgQEBGBAMCY0cGBMZWvxgQruXzC0hIaXMrAxJCELgPopgTQSSmDSIL88kIIjEEgRmCuJRFuNlv37PhiCAS9JAgtmZ2vvVgrWo4Ioj0PCKIzDo/+53lPBxtCCI5jwvi1AfxNBxVBJGcRwRxslYTWrm19u2XqrE2BR4Z6XnIHaIqrTyETl43RX/0xKUyQaydIAj8PYgZEURq+HMLBAGCAJdKEAQIAgSBEYKAIAgIgoAgCAiCgCAICIKA+F9BHC77Z4L4AiZPiNqszDOC8G5yEGfr1E+vFUF4NjmIhfXq8+47QXg1OYiNjTWX/TeC8Gj6ltHYnTInCH+mB/Fud3ImhEPTg9iZKnhkeDQ9iGcTOZdKl6YHEUrpgS3Dp4ggLuMeWDudigjihQnxBUQE8cPGPgnCpYggQqlFEIRHMUF8mnglCIdigjhZJ8+HIgjCn5ggQv3nNln0RSwIwp2oILa3HsZFEIQ3UUEs+m0zH4ogCGeigth0PWgRO4LwRYKYSIsgCFckiBjFUARBeCJB/FMRe4LwRIOIL6J+4ZHhigQRf4+oMy6VvkgQsYrmwNrpjAQRreKHKW94txMEAYIAQYAgQBAgCIwQBARBQBAEfrN3hzYAwDAQA6t2/50bGhD4INLdDOZuBEFUBfGSBLGMxRKCYHbzDgAAAAAAAADw26tDGwliIIiizRePdDE0atJSB2BuYNkRmBsMsjQ5HP/R3u3qyIWws/1AScVLqpRSSiml9L4U4GyS0osyXOGSlJ6U9YzazX1IO7EqYeuwIdv25cVCZI5iVZq130z3pqgrpXfANhjMRlQ4lKn4yToKA6YDOYi7U57s6NAeRpXAJxpQzyKFqG01/ArCGfkst6fUfg2ic4oUvmQxpJyqJVAJwGbwpM6WdHfKEnG8YyLGlIaLUmIUdl87DG34nOvyPIwPoAwdUF+DCCwKVTasgOOrlBbopLTBzkF8AgU4QzpDpCvgIgf0iom0AnZJO8EfzrekD3PM/q8//vp1SEoppZRSSu/sB++2H4HfKCBFAAAAAElFTkSuQmCC"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/4f577b60.9bdd01f1.js b/packages/noco-docs/dist/assets/js/4f577b60.9bdd01f1.js new file mode 100644 index 0000000000..1dff900cbb --- /dev/null +++ b/packages/noco-docs/dist/assets/js/4f577b60.9bdd01f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2922],{55913:e=>{e.exports=JSON.parse('{"label":"Records","permalink":"/tags/records","allTagsPath":"/tags","count":4,"items":[{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","permalink":"/records/actions-on-record"},{"id":"records/create-record","title":"Create record","description":"Learn how to create a record in NocoDB.","permalink":"/records/create-record"},{"id":"records/expand-record","title":"Expanded record","description":"Learn how to expand a record & work with it in NocoDB.","permalink":"/records/expand-record"},{"id":"records/records-overview","title":"Records overview","description":"Learn how to create, import, and manage records in NocoDB.","permalink":"/records/records-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/523749b8.09bf2be9.js b/packages/noco-docs/dist/assets/js/523749b8.09bf2be9.js new file mode 100644 index 0000000000..0fea1c4ec9 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/523749b8.09bf2be9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9508],{64307:e=>{e.exports=JSON.parse('{"label":"Search","permalink":"/tags/search","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","permalink":"/table-operations/search"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/524f61e0.b0cdc102.js b/packages/noco-docs/dist/assets/js/524f61e0.b0cdc102.js new file mode 100644 index 0000000000..6e1c4da6b5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/524f61e0.b0cdc102.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5150],{84549:e=>{e.exports=JSON.parse('{"label":"Delete","permalink":"/tags/delete","allTagsPath":"/tags","count":7,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"},{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","permalink":"/records/actions-on-record"},{"id":"tables/actions-on-table","title":"Actions on table","description":"Learn how to rename, duplicate, and delete a table in NocoDB.","permalink":"/tables/actions-on-table"},{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","permalink":"/automation/webhook/actions-on-webhook"},{"id":"workspaces/actions-on-workspace","title":"Actions on workspace","description":"This article explains how to rename or delete a workspace.","permalink":"/workspaces/actions-on-workspace"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/525fa7b4.7415cceb.js b/packages/noco-docs/dist/assets/js/525fa7b4.7415cceb.js new file mode 100644 index 0000000000..597a89168e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/525fa7b4.7415cceb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3469],{3905:(e,t,l)=>{l.d(t,{Zo:()=>c,kt:()=>m});var r=l(67294);function o(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function i(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,r)}return l}function n(e){for(var t=1;t=0||(o[l]=e[l]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(o[l]=e[l])}return o}var s=r.createContext({}),d=function(e){var t=r.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):n(n({},t),e)),l},c=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var l=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),p=d(l),u=o,m=p["".concat(s,".").concat(u)]||p[u]||f[u]||i;return l?r.createElement(m,n(n({ref:t},c),{},{components:l})):r.createElement(m,n({ref:t},c))}));function m(e,t){var l=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=l.length,n=new Array(i);n[0]=u;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[p]="string"==typeof e?e:o,n[1]=a;for(var d=2;d{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>f,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=l(87462),o=(l(67294),l(3905));const i={title:"QR code",description:"This article explains how to create & work with a QR code field.",tags:["Fields","Field types","Custom types","QR code"],keywords:["Fields","Field types","Custom types","QR code","Create QR code field"]},n=void 0,a={unversionedId:"fields/field-types/custom-types/QR-code",id:"fields/field-types/custom-types/QR-code",title:"QR code",description:"This article explains how to create & work with a QR code field.",source:"@site/docs/070.fields/040.field-types/050.custom-types/040.QR-code.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/QR-code",permalink:"/fields/field-types/custom-types/QR-code",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/040.QR-code.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"QR code",permalink:"/tags/qr-code"}],version:"current",sidebarPosition:40,frontMatter:{title:"QR code",description:"This article explains how to create & work with a QR code field.",tags:["Fields","Field types","Custom types","QR code"],keywords:["Fields","Field types","Custom types","QR code","Create QR code field"]},sidebar:"tutorialSidebar",previous:{title:"Attachment",permalink:"/fields/field-types/custom-types/attachment"},next:{title:"Barcode",permalink:"/fields/field-types/custom-types/barcode"}},s={},d=[{value:"Create a QR code field",id:"create-a-qr-code-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Related fields",id:"related-fields",level:2}],c={toc:d},p="wrapper";function f(e){let{components:t,...i}=e;return(0,o.kt)(p,(0,r.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"QR code")," is a custom field type that allows you to generate a QR code from a string value. This is useful for generating QR codes for things like URLs, phone numbers, or other data that can be represented as a string."),(0,o.kt)("p",null,"The following field types are supported for the reference field:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Formula"),(0,o.kt)("li",{parentName:"ul"},"Single Line Text"),(0,o.kt)("li",{parentName:"ul"},"Long Text"),(0,o.kt)("li",{parentName:"ul"},"Phone Number"),(0,o.kt)("li",{parentName:"ul"},"URL"),(0,o.kt)("li",{parentName:"ul"},"Email")),(0,o.kt)("h2",{id:"create-a-qr-code-field"},"Create a QR code field"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,o.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,o.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select the field type as ",(0,o.kt)("inlineCode",{parentName:"li"},"QR Code")," from the dropdown."),(0,o.kt)("li",{parentName:"ol"},"Select the field to be used as the source for the QR code."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:l(40543).Z,width:"2876",height:"1198"})),(0,o.kt)("h3",{id:"cell-display"},"Cell display"),(0,o.kt)("p",null,"Cell displays the QR code generated from the source field. Click on the cell to open enlarged view of the QR code."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:l(86789).Z,width:"948",height:"666"}),(0,o.kt)("br",{parentName:"p"}),"\n",(0,o.kt)("img",{alt:"image",src:l(61025).Z,width:"947",height:"704"})," "),(0,o.kt)("h2",{id:"related-fields"},"Related fields"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/fields/field-types/custom-types/barcode"},"Barcode"))))}f.isMDXComponent=!0},86789:(e,t,l)=>{l.d(t,{Z:()=>r});const r=l.p+"assets/images/qr-cell-display-4c407736d9529d363e9c5a5894d89064.png"},61025:(e,t,l)=>{l.d(t,{Z:()=>r});const r=l.p+"assets/images/qr-expand-71565f5a001bd474c52fd39577539d73.png"},40543:(e,t,l)=>{l.d(t,{Z:()=>r});const r=l.p+"assets/images/QR-46ddd7cfc009771eb6af72acb0e6124e.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/529c2981.677765b3.js b/packages/noco-docs/dist/assets/js/529c2981.677765b3.js new file mode 100644 index 0000000000..c7e92f08b7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/529c2981.677765b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7152],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},k=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(a),k=o,m=d["".concat(s,".").concat(k)]||d[k]||u[k]||l;return a?n.createElement(m,r(r({ref:t},c),{},{components:a})):n.createElement(m,r({ref:t},c))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=a.length,r=new Array(l);r[0]=k;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:o,r[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var n=a(87462),o=(a(67294),a(3905));const l={title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations"},r=void 0,i={unversionedId:"developer-resources/webhooks",id:"version-0.109.7/developer-resources/webhooks",title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/040.webhooks.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/webhooks",permalink:"/0.109.7/developer-resources/webhooks",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/040.webhooks.md",tags:[],version:"0.109.7",sidebarPosition:40,frontMatter:{title:"Webhooks",description:"Webhooks allows user to trigger on certain operations on following database operations"},sidebar:"tutorialSidebar",previous:{title:"NocoDB SDK",permalink:"/0.109.7/developer-resources/sdk"},next:{title:"Upload via API",permalink:"/0.109.7/developer-resources/upload-via-api"}},s={},p=[{value:"Overview",id:"overview",level:2},{value:"Open View menu, click on Webhooks",id:"open-view-menu-click-on-webhooks",level:3},{value:"Click Add New Webhook",id:"click-add-new-webhook",level:3},{value:"Configure Webhook",id:"configure-webhook",level:3},{value:"Call Log",id:"call-log",level:2},{value:"Triggers",id:"triggers",level:2},{value:"Applications/services",id:"applicationsservices",level:3},{value:"Accessing Data: Handlebars",id:"accessing-data-handlebars",level:2},{value:"Example",id:"example",level:3},{value:"JSON format",id:"json-format",level:3},{value:"Additional references:",id:"additional-references",level:3},{value:"Discord",id:"discord",level:2},{value:"1. Create WebHook",id:"1-create-webhook",level:3},{value:"2. Install Plugin",id:"2-install-plugin",level:3},{value:"3. Configure",id:"3-configure",level:3},{value:"Slack",id:"slack",level:2},{value:"1. Create WebHook",id:"1-create-webhook-1",level:3},{value:"2. Install Plugin",id:"2-install-plugin-1",level:3},{value:"3. Configure Webhook",id:"3-configure-webhook",level:3},{value:"Microsoft Teams",id:"microsoft-teams",level:2},{value:"1. Create WebHook",id:"1-create-webhook-2",level:3},{value:"2. Install Plugin",id:"2-install-plugin-2",level:3},{value:"3. Configure",id:"3-configure-1",level:3},{value:"Webhook V2",id:"webhook-v2",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,o.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"Some types of notifications can be triggered by a webhook after a particular event."),(0,o.kt)("h3",{id:"open-view-menu-click-on-webhooks"},"Open ",(0,o.kt)("inlineCode",{parentName:"h3"},"View menu"),", click on ",(0,o.kt)("inlineCode",{parentName:"h3"},"Webhooks")),(0,o.kt)("img",{width:"442",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194849113-910ddafa-4b05-4492-a7a6-d9259d892eb9.png"}),(0,o.kt)("h3",{id:"click-add-new-webhook"},"Click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Add New Webhook")),(0,o.kt)("img",{width:"686",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194849248-1d0b80c6-f65b-4075-8ebd-af7dc735c2c3.png"}),(0,o.kt)("h3",{id:"configure-webhook"},"Configure Webhook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"General configurations",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Webhook Name"),(0,o.kt)("li",{parentName:"ul"},"Webhook Trigger"),(0,o.kt)("li",{parentName:"ul"},"Webhook Type"))),(0,o.kt)("li",{parentName:"ul"},"Webhook Type specific configuration : additional configuration details depending on webhook type selected"),(0,o.kt)("li",{parentName:"ul"},"Webhook Conditional Trigger",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Only records meeting the criteria will trigger webhook ")))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/230288581-c613e591-1c32-4151-a2d1-df2bbf1367fd.png",alt:"Screenshot 2023-04-06 at 11 39 49 AM"})),(0,o.kt)("h2",{id:"call-log"},"Call Log"),(0,o.kt)("p",null,"Call Log allows user to check the call history of the hook. By default, it has been disabled. However, it can be configured by using environment variable ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_AUTOMATION_LOG_LEVEL"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=OFF"),": No logs will be displayed and no history will be inserted to meta database."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=ERROR"),": only error logs will be displayed and history of error logs will be inserted to meta database."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"NC_AUTOMATION_LOG_LEVEL=ALL"),": Both error and success logs will be displayed and history of both types of logs will be inserted to meta database. ",(0,o.kt)("strong",{parentName:"li"},"This option is only available for Enterprise Edition."))),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/228790148-1e3f21c7-9385-413a-843f-b93073ca6bea.png",alt:"image"})),(0,o.kt)("h2",{id:"triggers"},"Triggers"),(0,o.kt)("p",null,"Webhooks allows user to trigger on certain operations on following database operations"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"AFTER INSERT"),(0,o.kt)("li",{parentName:"ul"},"AFTER UPDATE"),(0,o.kt)("li",{parentName:"ul"},"AFTER DELETE")),(0,o.kt)("p",null,"The triggers will trigger asynchronously without blocking the actual operation."),(0,o.kt)("h3",{id:"applicationsservices"},"Applications/services"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Trigger"),(0,o.kt)("th",{parentName:"tr",align:null},"Details"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Email"),(0,o.kt)("td",{parentName:"tr",align:null},"Send email to certain email addresses")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Slack"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Slack channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Microsoft Teams"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Microsoft Teams channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Discord"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Discord channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mattermost"),(0,o.kt)("td",{parentName:"tr",align:null},"Notify via Mattermost channel")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Twilio"),(0,o.kt)("td",{parentName:"tr",align:null},"Send SMS to certain mobile numbers")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Whatsapp Twilio"),(0,o.kt)("td",{parentName:"tr",align:null},"Send Whatsapp messages to numbers using Twilio")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"URL"),(0,o.kt)("td",{parentName:"tr",align:null},"Invoke an HTTP API")))),(0,o.kt)("h2",{id:"accessing-data-handlebars"},"Accessing Data: Handlebars"),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"You can access data using handlebars for v1 webhooks only.")),(0,o.kt)("p",null,"The current row data and other details will be available in the hooks payload so the user can use ",(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/guide/#simple-expressions"},"handlebar syntax")," to use data."),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"We are using ",(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/"},"Handlebars")," library to parse the payload internally.")),(0,o.kt)("h3",{id:"example"},"Example"),(0,o.kt)("p",null,"For a table with column names (id, title, created_at, updated_at).",(0,o.kt)("br",{parentName:"p"}),"\n","For INSERT/ UPDATE based triggers, use following handlebars to access corresponding ",(0,o.kt)("strong",{parentName:"p"},"data")," fields."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".id }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".title }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".created_at }}"),(0,o.kt)("li",{parentName:"ul"},"{{ ",(0,o.kt)("strong",{parentName:"li"},"data"),".updated_at }} ")),(0,o.kt)("p",null,"Note that, for Update trigger - all the fields in the ROW will be accessible, not just the field updated.\nFor DELETE based triggers, ",(0,o.kt)("strong",{parentName:"p"},"only")," {{ data.id }} is accessible representing ID of the column deleted."),(0,o.kt)("h3",{id:"json-format"},"JSON format"),(0,o.kt)("p",null,"Use {{ json data }} to dump complete data & user information available in JSON format"),(0,o.kt)("h3",{id:"additional-references"},"Additional references:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://handlebarsjs.com/guide/"},"Handlebar Guide"),"."),(0,o.kt)("h1",{id:"application-guide"},"Application Guide"),(0,o.kt)("h2",{id:"discord"},"Discord"),(0,o.kt)("h3",{id:"1-create-webhook"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On Discord, open your Server Settings and head into the Integrations tab:"),(0,o.kt)("li",{parentName:"ul"},'Click the "Create Webhook" button to create a new webhook!')),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/155087088-8f9fd762-9ff9-41a6-aed4-0f22add77fe6.png",alt:"Screenshot 2022-02-22 at 1 21 59 PM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Choose channel to which this webhook will post to."),(0,o.kt)("li",{parentName:"ul"},"Copy webhook URL")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/155087126-c2cdd7b2-518a-46a5-82a5-aa90fe51a709.png",alt:"Screenshot 2022-02-22 at 1 23 18 PM"})),(0,o.kt)("p",null,"(Sample webhook URL: ",(0,o.kt)("a",{parentName:"p",href:"https://discord.com/api/webhooks/945558283756908644/GNUtiGuzfOky6wZ4ce30XuXc1sbPK3Od7EC-4t6hihh5Fovv6oU9OsdT6mGuoL1QlTzj"},"https://discord.com/api/webhooks/945558283756908644/GNUtiGuzfOky6wZ4ce30XuXc1sbPK3Od7EC-4t6hihh5Fovv6oU9OsdT6mGuoL1QlTzj"),").",(0,o.kt)("br",{parentName:"p"}),"\n","Detailed procedure for discord webhook described ",(0,o.kt)("a",{parentName:"p",href:"https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks"},"here"),"."),(0,o.kt)("h3",{id:"2-install-plugin"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open 'App Store' (under Settings), hover over Discord tile. Click 'Install'.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066333-04bab4eb-f114-48e5-b3f9-6327cadb1ca7.png",alt:"Screenshot 2022-09-14 at 10 47 59 AM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Provide a name of your choice (not to be confused with Discord Channel name)."),(0,o.kt)("li",{parentName:"ul"},"Paste Discord Webhook URL copied from Step (1.) above.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066365-90e3136b-db24-4514-aa89-c1fb371b33ee.png",alt:"Screenshot 2022-09-14 at 10 52 14 AM"})),(0,o.kt)("h3",{id:"3-configure"},"3. Configure"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open project and choose a table."),(0,o.kt)("li",{parentName:"ul"},"Click 'More' > 'Webhooks'."),(0,o.kt)("li",{parentName:"ul"},"Click 'Create webhook'"),(0,o.kt)("li",{parentName:"ul"},"Configure webhook",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Title"),": Name of your choice to identify this Webhook."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Event"),": Trigger event. Choose between.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"After Insert: Trigger event for new ROW insertion."),(0,o.kt)("li",{parentName:"ul"},"After Update: Trigger event for existing ROW updation."),(0,o.kt)("li",{parentName:"ul"},"After Delete: Trigger event for ROW deletion"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"On Condition"),": ","[Optional]"," Enable if you wish to associate additional condition/constraint with the trigger configured above."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Notification"),": Select 'Discord'."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Select Discord Channels"),": Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Body"),": Message to be posted over Discord channel, via webhooks on trigger of configured event.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Body can contain plain text &"),(0,o.kt)("li",{parentName:"ul"},"Handlebars {{ }}")))))),(0,o.kt)("h2",{id:"slack"},"Slack"),(0,o.kt)("h3",{id:"1-create-webhook-1"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Details to create slack webhook are captured ",(0,o.kt)("a",{parentName:"li",href:"https://api.slack.com/messaging/webhooks"},"here"))),(0,o.kt)("h3",{id:"2-install-plugin-1"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Procedure remain same as listed for DISCORD channel configuration above")),(0,o.kt)("h3",{id:"3-configure-webhook"},"3. Configure Webhook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Procedure remain same as listed for DISCORD channel configuration above")),(0,o.kt)("h2",{id:"microsoft-teams"},"Microsoft Teams"),(0,o.kt)("h3",{id:"1-create-webhook-2"},"1. Create WebHook"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"On Teams, open your channel, click on three-dots menu (far right) and select 'Connectors'")),(0,o.kt)("img",{width:"319",alt:"154971352-6912d53b-cf71-4edd-a319-1c85be85f0c5",src:"https://user-images.githubusercontent.com/86527202/155095745-91abd708-834f-4f0e-a33c-ac362e60af0f.png"}),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Select incoming webhook & click 'Configure'")),(0,o.kt)("img",{width:"442",alt:"154971434-0ced97f7-205a-4e2e-8f88-17092cb7771a",src:"https://user-images.githubusercontent.com/86527202/155095741-b23ad6b2-1276-46e3-8ada-0d0a871115bb.png"}),"- Create webhook, Copy webhook URL ![154971683-db16be7f-4f07-4447-8f2e-ac50e133bef8](https://user-images.githubusercontent.com/86527202/155095733-c339a914-5d78-408c-8f1e-9cd75a7783e8.png)",(0,o.kt)("h3",{id:"2-install-plugin-2"},"2. Install Plugin"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open 'App Store' (under Settings), hover over 'Microsoft Teams' tile. Click 'Install'.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066409-03311add-3b36-4521-acf7-dba5ffdef3fb.png",alt:"Screenshot 2022-09-14 at 10 53 22 AM"})),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Provide a name of your choice (not to be confused with Teams Channel name)."),(0,o.kt)("li",{parentName:"ul"},"Paste MS Teams Webhook URL copied from Step (1.) above.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190066430-838eaa69-ac2c-49ce-a0eb-d84c97964f8b.png",alt:"Screenshot 2022-09-14 at 10 53 31 AM"})),(0,o.kt)("h3",{id:"3-configure-1"},"3. Configure"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Open project and choose a table."),(0,o.kt)("li",{parentName:"ul"},"Click 'More' > 'Webhooks'."),(0,o.kt)("li",{parentName:"ul"},"Click 'Create webhook'"),(0,o.kt)("li",{parentName:"ul"},"Configure webhook",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Title"),": Name of your choice to identify this Webhook."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Event"),": Trigger event. Choose between.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"After Insert: Trigger event for new ROW insertion."),(0,o.kt)("li",{parentName:"ul"},"After Update: Trigger event for existing ROW updation."),(0,o.kt)("li",{parentName:"ul"},"After Delete: Trigger event for ROW deletion"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"On Condition"),": ","[Optional]"," Enable if you wish to associate additional condition/constraint with the trigger configured above."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Notification"),": Select 'Microsoft Teams'."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Select Teams Channels"),": Select from the drop down list, channel name configured in Step (2). Please click on 'Reload' if drop down list is empty."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Body"),": Message to be posted over Teams channel, via webhooks on trigger of configured event.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Body can contain plain text &"),(0,o.kt)("li",{parentName:"ul"},"Handlebars {{ }}")))))),(0,o.kt)("h2",{id:"webhook-v2"},"Webhook V2"),(0,o.kt)("p",null,"Webhook v2 is available after v0.106.0. Here's the differences."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Response Payload has been predefined and cannot configure in Body using Handlebars. The payload can be referenced under ",(0,o.kt)("inlineCode",{parentName:"li"},"Sample Payload")," in Hook detail page."),(0,o.kt)("li",{parentName:"ul"},"Support the following bulk operations:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"AFTER BULK INSERT"),(0,o.kt)("li",{parentName:"ul"},"AFTER BULK UPDATE"),(0,o.kt)("li",{parentName:"ul"},"AFTER BULK DELETE")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/52df1fbb.ee608d54.js b/packages/noco-docs/dist/assets/js/52df1fbb.ee608d54.js new file mode 100644 index 0000000000..02866c8b57 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/52df1fbb.ee608d54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8395],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=l(n),d=o,g=u["".concat(p,".").concat(d)]||u[d]||m[d]||a;return n?r.createElement(g,i(i({ref:t},s),{},{components:n})):r.createElement(g,i({ref:t},s))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Repository structure",description:"Repository Structure",tags:["Engineering"],hide_table_of_contents:!0},i=void 0,c={unversionedId:"engineering/repository-structure",id:"engineering/repository-structure",title:"Repository structure",description:"Repository Structure",source:"@site/docs/150.engineering/020.repository-structure.md",sourceDirName:"150.engineering",slug:"/engineering/repository-structure",permalink:"/engineering/repository-structure",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/020.repository-structure.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:20,frontMatter:{title:"Repository structure",description:"Repository Structure",tags:["Engineering"],hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Architecture overview",permalink:"/engineering/architecture"},next:{title:"Development setup",permalink:"/engineering/development-setup"}},p={},l=[],s={toc:l},u="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"We use ",(0,o.kt)("inlineCode",{parentName:"p"},"Lerna")," to manage multi-packages. We have the following ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/tree/master/packages"},"packages"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-cli")," : A CLI to create NocoDB app.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb-sdk"),": API client sdk of nocodb.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-gui"),": NocoDB Frontend.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-lib-gui"),": The build version of ",(0,o.kt)("inlineCode",{parentName:"p"},"nc-gui")," which will be used in ",(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-plugin"),": Plugin template.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/noco-blog"),": NocoDB Blog which will be auto-released to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/noco-blog"},"nocodb/noco-blog"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/noco-docs"),": NocoDB Documentation which will be auto-released to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/noco-docs"},"nocodb/noco-docs"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb"),": NocoDB Backend, hosted in ",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/nocodb"},"NPM"),"."))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5436f7e6.ae12cb28.js b/packages/noco-docs/dist/assets/js/5436f7e6.ae12cb28.js new file mode 100644 index 0000000000..812ca1db58 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5436f7e6.ae12cb28.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3939],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},f=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),f=r,m=d["".concat(s,".").concat(f)]||d[f]||u[f]||o;return n?a.createElement(m,i(i({ref:t},p),{},{components:n})):a.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const o={title:"Upload via API",description:"Upload files locally present or from public remote URL via API",hide_table_of_contents:!0},i=void 0,l={unversionedId:"developer-resources/upload-via-api",id:"version-0.109.7/developer-resources/upload-via-api",title:"Upload via API",description:"Upload files locally present or from public remote URL via API",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/050.upload-via-api.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/upload-via-api",permalink:"/0.109.7/developer-resources/upload-via-api",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/050.upload-via-api.md",tags:[],version:"0.109.7",sidebarPosition:50,frontMatter:{title:"Upload via API",description:"Upload files locally present or from public remote URL via API",hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Webhooks",permalink:"/0.109.7/developer-resources/webhooks"},next:{title:"Architecture Overview",permalink:"/0.109.7/engineering/architecture"}},s={},c=[],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Sample code to upload files via API is listed below.\nAssumes ",(0,r.kt)("inlineCode",{parentName:"p"},"http://localhost:8080/")," as the base URL for the API calls."),(0,r.kt)("h1",{id:"upload-local-file"},"Upload local file"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"let axios = require(\"axios\").default;\nlet FormData = require('form-data');\nlet fs = require('fs');\n\n// Configurations\n//\nconst project_id = '';\nconst table_id = '';\nconst xc_token = '';\nconst file_path = '';\n\n\n// Insert Image\n// @param image_path : local file path\n// @return : JSON object to be used in insert record API for attachment field\n//\nasync function insertImage (path) {\n const formData = new FormData();\n formData.append(\"file\", fs.createReadStream(path));\n const data = await axios({\n url: 'http://localhost:8080/api/v1/db/storage/upload',\n data: formData,\n headers:{\n 'Content-Type':`multipart/form-data;`,\n 'xc-auth': xc_token\n },\n method: 'post',\n\n // Optional : storage file path\n params: {\"path\": \"somePath\"}\n });\n return data;\n}\n\n// Insert record with attachment\n// Assumes a table with two columns :\n// 'Title' of type SingleLineText and\n// 'Attachment' of type Attachment\n//\nasync function uploadFileExample() {\n let response = await insertImage(file_path);\n\n let row = {\n \"Title\": \"2\",\n \"Attachment\": response.data\n };\n\n await axios({\n method: 'POST',\n url: `http://localhost:8080/api/v1/db/data/noco/${project_id}/${table_id}`,\n data: row,\n headers: {\n 'xc-auth': xc_token\n }\n });\n}\n\n(async () => {\n await uploadFileExample();\n})();\n")),(0,r.kt)("h1",{id:"upload-via-url"},"Upload via URL"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"let axios = require(\"axios\").default;\nlet FormData = require('form-data');\nlet fs = require('fs');\n\n// Configurations\n//\nconst project_id = '';\nconst table_id = '
';\nconst xc_token = '';\n\n// URL array : URLs of files to be uploaded\nconst URLs = [{ url: '' }, { url: '' }];\n\n// Insert Image\n// @param URLs : [] containing public URL for files to be uploaded\n// @return : JSON object to be used in insert record API for attachment field\n//\nasync function insertImageByURL (URL_array) {\n const data = await axios({\n url: 'http://localhost:8080/api/v1/db/storage/upload-by-url',\n data: URL_array,\n headers: {\n 'xc-auth': xc_token\n },\n method: 'post',\n\n // Optional : storage file path\n params: {\"path\": \"somePath\"}\n });\n return data;\n}\n\n// Insert record with attachment\n// Assumes a table with two columns :\n// 'Title' of type SingleLineText and\n// 'Attachment' of type Attachment\n//\nasync function uploadByUrlExample() {\n let response = await insertImageByURL(URLs);\n\n // Update two columns : Title and Attachment\n let row = {\n \"Title\": \"3\",\n \"Attachment\": response.data\n };\n\n await axios({\n method: 'POST',\n url: `http://localhost:8080/api/v1/db/data/noco/${project_id}/${table_id}`,\n data: row,\n headers: {\n 'xc-auth': xc_auth\n }\n });\n}\n\n(async () => {\n await uploadByUrlExample();\n})();\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/55156658.9adabe0f.js b/packages/noco-docs/dist/assets/js/55156658.9adabe0f.js new file mode 100644 index 0000000000..fd78aeab25 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/55156658.9adabe0f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1802],{80394:e=>{e.exports=JSON.parse('{"label":"Lookup","permalink":"/tags/lookup","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/links-based/lookup","title":"Lookup","description":"This article explains how to create & work with a Lookup field.","permalink":"/fields/field-types/links-based/lookup"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/55403ccd.7e8b474f.js b/packages/noco-docs/dist/assets/js/55403ccd.7e8b474f.js new file mode 100644 index 0000000000..8e62342336 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/55403ccd.7e8b474f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2650],{3905:(t,e,n)=>{n.d(e,{Zo:()=>o,kt:()=>s});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var m=a.createContext({}),p=function(t){var e=a.useContext(m),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},o=function(t){var e=p(t.components);return a.createElement(m.Provider,{value:e},t.children)},u="mdxType",k={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},N=a.forwardRef((function(t,e){var n=t.components,r=t.mdxType,l=t.originalType,m=t.parentName,o=d(t,["components","mdxType","originalType","parentName"]),u=p(n),N=r,s=u["".concat(m,".").concat(N)]||u[N]||k[N]||l;return n?a.createElement(s,i(i({ref:e},o),{},{components:n})):a.createElement(s,i({ref:e},o))}));function s(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=n.length,i=new Array(l);i[0]=N;var d={};for(var m in e)hasOwnProperty.call(e,m)&&(d[m]=e[m]);d.originalType=t,d[u]="string"==typeof t?t:r,i[1]=d;for(var p=2;p{n.r(e),n.d(e,{assets:()=>m,contentTitle:()=>i,default:()=>k,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const l={title:"Formulas",description:"NocoDB Formulas Syntaxes and Functions"},i=void 0,d={unversionedId:"setup-and-usages/formulas",id:"version-0.109.7/setup-and-usages/formulas",title:"Formulas",description:"NocoDB Formulas Syntaxes and Functions",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/090.formulas.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/formulas",permalink:"/0.109.7/setup-and-usages/formulas",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/090.formulas.md",tags:[],version:"0.109.7",sidebarPosition:90,frontMatter:{title:"Formulas",description:"NocoDB Formulas Syntaxes and Functions"},sidebar:"tutorialSidebar",previous:{title:"Rollup",permalink:"/0.109.7/setup-and-usages/rollup"},next:{title:"Primary Key",permalink:"/0.109.7/setup-and-usages/primary-key"}},m={},p=[{value:"Adding formula column",id:"adding-formula-column",level:2},{value:"1. Click on '+' (Add column)",id:"1-click-on--add-column",level:3},{value:"2. Populate column Name",id:"2-populate-column-name",level:3},{value:"3. Select column Type as 'Formula'",id:"3-select-column-type-as-formula",level:3},{value:"4. Insert required formula",id:"4-insert-required-formula",level:3},{value:"5. Click on 'Save'",id:"5-click-on-save",level:3},{value:"Editing formula column",id:"editing-formula-column",level:2},{value:"Available Formula Features",id:"available-formula-features",level:2},{value:"Numeric Functions",id:"numeric-functions",level:3},{value:"Numeric Operators",id:"numeric-operators",level:3},{value:"String Functions",id:"string-functions",level:3},{value:"Date Functions",id:"date-functions",level:3},{value:"Logical Operators",id:"logical-operators",level:3},{value:"Conditional Expressions",id:"conditional-expressions",level:3}],o={toc:p},u="wrapper";function k(t){let{components:e,...n}=t;return(0,r.kt)(u,(0,a.Z)({},o,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"adding-formula-column"},"Adding formula column"),(0,r.kt)("img",{width:"990",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189108950-fba76e31-8ae4-4108-916b-e413c841f451.png"}),(0,r.kt)("h3",{id:"1-click-on--add-column"},"1. Click on '+' (Add column)"),(0,r.kt)("h3",{id:"2-populate-column-name"},"2. Populate column Name"),(0,r.kt)("h3",{id:"3-select-column-type-as-formula"},"3. Select column Type as 'Formula'"),(0,r.kt)("h3",{id:"4-insert-required-formula"},"4. Insert required formula"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You can use explicit numerical values/ strings as needed, e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"123")," (numeric) or ",(0,r.kt)("inlineCode",{parentName:"li"},'"123"')," (string)."),(0,r.kt)("li",{parentName:"ul"},"You can reference column names in equation with ",(0,r.kt)("inlineCode",{parentName:"li"},"{}"),", e.g. ",(0,r.kt)("inlineCode",{parentName:"li"},"{column_name}"),", if the column name conflicts with literals"),(0,r.kt)("li",{parentName:"ul"},"Table below lists supported formula & associated syntax"),(0,r.kt)("li",{parentName:"ul"},"Nested formula (formula equation referring to another formula column) is supported")),(0,r.kt)("h3",{id:"5-click-on-save"},"5. Click on 'Save'"),(0,r.kt)("h2",{id:"editing-formula-column"},"Editing formula column"),(0,r.kt)("p",null,"Unlike other column types, formula cells cannot be modified by double-clicking since the value is generated based on the formula. Instead, the vaule can be changed by updating the formula in the column setting."),(0,r.kt)("img",{width:"253",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189109486-4d41f2b7-0a19-46ef-8bb4-a8d1aabd3592.png"}),(0,r.kt)("h2",{id:"available-formula-features"},"Available Formula Features"),(0,r.kt)("h3",{id:"numeric-functions"},"Numeric Functions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ABS")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ABS(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ABS({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Absolute value of the input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ADD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ADD(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ADD({Column1}, {Column2})")),(0,r.kt)("td",{parentName:"tr",align:null},"Sum of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"AVG")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AVG(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AVG({Column1}, {Column2})")),(0,r.kt)("td",{parentName:"tr",align:null},"Average of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"CEILING")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CEILING(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CEILING({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Rounded next largest integer value of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"EXP")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"EXP(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"EXP({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Exponential value of input parameter (",(0,r.kt)("inlineCode",{parentName:"td"},"e^x"),")")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"FLOOR")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"FLOOR(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"FLOOR({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Rounded largest integer less than or equal to input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"INT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"INT(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"INT({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Integer value of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"LOG")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOG([base], value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOG(10, {Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Logarithm of input parameter to the base (default = e) specified")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MAX")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MAX(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MAX({Column1}, {Column2}, {Column3})")),(0,r.kt)("td",{parentName:"tr",align:null},"Maximum value amongst input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MIN")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MIN(value1,[value2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MIN({Column1}, {Column2}, {Column3})")),(0,r.kt)("td",{parentName:"tr",align:null},"Minimum value amongst input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MOD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MOD(value1, value2)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MOD({Column}, 2)")),(0,r.kt)("td",{parentName:"tr",align:null},"Remainder after integer division of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"POWER")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"POWER(base, exponent)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"POWER({Column}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"base")," to the ",(0,r.kt)("inlineCode",{parentName:"td"},"exponent")," power, as in ",(0,r.kt)("inlineCode",{parentName:"td"},"base ^ exponent"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"ROUND")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ROUND(value, precision)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"ROUND({Column}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},"Round input ",(0,r.kt)("inlineCode",{parentName:"td"},"value")," to decimal place specified by ",(0,r.kt)("inlineCode",{parentName:"td"},"precision")," (Nearest integer if ",(0,r.kt)("inlineCode",{parentName:"td"},"precision")," not provided)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SQRT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SQRT(value)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SQRT({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Square root of the input parameter")))),(0,r.kt)("h3",{id:"numeric-operators"},"Numeric Operators"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Operator"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"+")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} + {Column2} + 2")),(0,r.kt)("td",{parentName:"tr",align:null},"Addition of numeric values")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"-")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} - {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Subtraction of numeric values")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"*")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} * {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Multiplication of numeric values")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"/")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} / {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Division of numeric values")))),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"To change the order of arithmetic operation, you can use round bracket parantheses (). ",(0,r.kt)("br",null),"\nExample: ({Column1} + ({Column2} * {Column3}) / (3 - $Column4$ ))")),(0,r.kt)("h3",{id:"string-functions"},"String Functions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"CONCAT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CONCAT(str1, [str2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"CONCAT({Column1}, ' ', {Column2})")),(0,r.kt)("td",{parentName:"tr",align:null},"Concatenated string of input parameters")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"LEFT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LEFT(str1, n)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LEFT({Column}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"n")," characters from the beginning of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"LEN")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LEN(str)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LEN({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Input parameter character length")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"LOWER")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOWER(str)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"LOWER({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Lower case converted string of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"MID")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MID(str, position, [count])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"MID({Column}, 3, 2)")),(0,r.kt)("td",{parentName:"tr",align:null},"Alias for ",(0,r.kt)("inlineCode",{parentName:"td"},"SUBSTR"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"REPEAT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"REPEAT(str, count)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"REPEAT({Column}, 2)")),(0,r.kt)("td",{parentName:"tr",align:null},"Specified copies of the input parameter string concatenated together")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"REPLACE")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"REPLACE(str, srchStr, rplcStr)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"REPLACE({Column}, 'int', 'num')")),(0,r.kt)("td",{parentName:"tr",align:null},"String, after replacing all occurrences of ",(0,r.kt)("inlineCode",{parentName:"td"},"srchStr")," with ",(0,r.kt)("inlineCode",{parentName:"td"},"rplcStr"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"RIGHT")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"RIGHT(str, n)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"RIGHT({Column}, 3)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"n")," characters from the end of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SEARCH")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SEARCH(str, srchStr)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SEARCH({Column}, 'str')")),(0,r.kt)("td",{parentName:"tr",align:null},"Index of ",(0,r.kt)("inlineCode",{parentName:"td"},"srchStr")," specified if found, 0 otherwise")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SUBSTR")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SUBTR(str, position, [count])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SUBSTR({Column}, 3, 2)")),(0,r.kt)("td",{parentName:"tr",align:null},"Substring of length 'count' of input string, from the postition specified")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"TRIM")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"TRIM(str)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"TRIM({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Remove trailing and leading whitespaces from input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"UPPER")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"UPPER(str)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"UPPER({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Upper case converted string of input parameter")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"URL")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"URL(str)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"URL({Column})")),(0,r.kt)("td",{parentName:"tr",align:null},"Convert to a hyperlink if it is a valid URL")))),(0,r.kt)("h3",{id:"date-functions"},"Date Functions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"),(0,r.kt)("th",{parentName:"tr",align:null},"Remark"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"NOW")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NOW()")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"NOW()")),(0,r.kt)("td",{parentName:"tr",align:null},"2022-05-19 17:20:43"),(0,r.kt)("td",{parentName:"tr",align:null},"Returns the current time and day")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < {DATE_COL}, "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < date, "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If current date is less than {DATE_COL}, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"DATEADD")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATEADD(date \\| datetime, value, ["day" \\| "week" \\| "month" \\| "year"])')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'day')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14. The result is 2022-03-15."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'day')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'week')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-03-21 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'week')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'month')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-04-14 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'month')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(date, 1, 'year')")),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2023-03-14 03:14."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported. Example: ",(0,r.kt)("inlineCode",{parentName:"td"},"DATEADD(DATE_TIME_COL, -1, 'year')"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < DATEADD(date,10,\'day\'), "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'IF(NOW() < DATEADD(date,10,\'day\'), "true", "false")')),(0,r.kt)("td",{parentName:"tr",align:null},"If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false."),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime columns and negative values are supported.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"DATETIME_DIFF")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATETIME_DIFF(date, date, ["milliseconds" \\| "ms" \\| "seconds" \\| "s" \\| "minutes" \\| "m" \\| "hours" \\| "h" \\| "days" \\| "d" \\| "weeks" \\| "w" \\| "months" \\| "M" \\| "quarters" \\| "Q" \\| "years" \\| "y"])')),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'DATETIME_DIFF("2022/10/14", "2022/10/15", "second")')),(0,r.kt)("td",{parentName:"tr",align:null},"Supposing {DATE_COL_1} is 2017-08-25 and {DATE_COL_2} is 2011-08-25. The result is 86400."),(0,r.kt)("td",{parentName:"tr",align:null},"Compares two dates and returns the difference in the unit specified. Positive integers indicate the second date being in the past compared to the first and vice versa for negative ones.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'WEEKDAY(NOW(), "sunday")')),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 1"),(0,r.kt)("td",{parentName:"tr",align:null},"Get the week day of NOW() with the first day set as sunday")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"WEEKDAY")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"WEEKDAY(date, [startDayOfWeek])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"WEEKDAY(NOW())")),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 0"),(0,r.kt)("td",{parentName:"tr",align:null},"Returns the day of the week as an integer between 0 and 6 inclusive starting from Monday by default. You can optionally change the start day of the week by specifying in the second argument")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null}),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},'WEEKDAY(NOW(), "sunday")')),(0,r.kt)("td",{parentName:"tr",align:null},"If today is Monday, it returns 1"),(0,r.kt)("td",{parentName:"tr",align:null},"Get the week day of NOW() with the first day set as sunday")))),(0,r.kt)("h3",{id:"logical-operators"},"Logical Operators"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Operator"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"<")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} < {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Less than")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},">")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} > {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Greater than")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"<=")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} <= {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Less than or equal to")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},">=")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} >= {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Greater than or equal to")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"==")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} == {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Equal to")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"!=")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"{Column1} != {Column2}")),(0,r.kt)("td",{parentName:"tr",align:null},"Not equal to")))),(0,r.kt)("h3",{id:"conditional-expressions"},"Conditional Expressions"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Syntax"),(0,r.kt)("th",{parentName:"tr",align:null},"Sample"),(0,r.kt)("th",{parentName:"tr",align:null},"Output"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"IF")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"IF(expr, successCase, elseCase)")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"IF({Column} > 1, Value1, Value2)")),(0,r.kt)("td",{parentName:"tr",align:null},"successCase if ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluates to TRUE, elseCase otherwise")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"SWITCH")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SWITCH(expr, [pattern, value, ..., default])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"SWITCH({Column}, 1, 'One', 2, 'Two', '--')")),(0,r.kt)("td",{parentName:"tr",align:null},"Switch case value based on ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," output")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"AND")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AND(expr1, [expr2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"AND({Column} > 2, {Column} < 10)")),(0,r.kt)("td",{parentName:"tr",align:null},"TRUE if all ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluate to TRUE")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("strong",{parentName:"td"},"OR")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OR(expr1, [expr2,...])")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"OR({Column} > 2, {Column} < 10)")),(0,r.kt)("td",{parentName:"tr",align:null},"TRUE if at least one ",(0,r.kt)("inlineCode",{parentName:"td"},"expr")," evaluates to TRUE")))),(0,r.kt)("p",null,"Logical operators, along with Numerical operators can be used to build conditional ",(0,r.kt)("inlineCode",{parentName:"p"},"expressions"),". "),(0,r.kt)("p",null,"Examples: "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},'IF({marksSecured} > 80, "GradeA", "GradeB") \n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"SWITCH({quarterNumber}, \n 1, 'Jan-Mar',\n 2, 'Apr-Jun',\n 3, 'Jul-Sep',\n 4, 'Oct-Dec',\n 'INVALID'\n)\n")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/55960ee5.9505d06b.js b/packages/noco-docs/dist/assets/js/55960ee5.9505d06b.js new file mode 100644 index 0000000000..710755d8aa --- /dev/null +++ b/packages/noco-docs/dist/assets/js/55960ee5.9505d06b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4121],{88070:e=>{e.exports=JSON.parse('[{"label":"Account Settings","permalink":"/tags/account-settings","count":3},{"label":"Api Tokens","permalink":"/tags/api-tokens","count":1},{"label":"Open Source","permalink":"/tags/open-source","count":5},{"label":"Profile","permalink":"/tags/profile","count":1},{"label":"Member","permalink":"/tags/member","count":2},{"label":"Webhook","permalink":"/tags/webhook","count":3},{"label":"Delete","permalink":"/tags/delete","count":7},{"label":"Duplicate","permalink":"/tags/duplicate","count":6},{"label":"Disable","permalink":"/tags/disable","count":1},{"label":"Enable","permalink":"/tags/enable","count":1},{"label":"Create","permalink":"/tags/create","count":6},{"label":"Overview","permalink":"/tags/overview","count":12},{"label":"Bases","permalink":"/tags/bases","count":9},{"label":"Rename","permalink":"/tags/rename","count":5},{"label":"Relations","permalink":"/tags/relations","count":2},{"label":"Swagger","permalink":"/tags/swagger","count":1},{"label":"REST APIs","permalink":"/tags/rest-ap-is","count":1},{"label":"Collaboration","permalink":"/tags/collaboration","count":8},{"label":"Members","permalink":"/tags/members","count":4},{"label":"Invite","permalink":"/tags/invite","count":4},{"label":"Roles","permalink":"/tags/roles","count":5},{"label":"Permissions","permalink":"/tags/permissions","count":3},{"label":"Dashboard","permalink":"/tags/dashboard","count":1},{"label":"Import","permalink":"/tags/import","count":2},{"label":"Share","permalink":"/tags/share","count":5},{"label":"Share base","permalink":"/tags/share-base","count":1},{"label":"Workspaces","permalink":"/tags/workspaces","count":6},{"label":"Views","permalink":"/tags/views","count":9},{"label":"Grid view","permalink":"/tags/grid-view","count":12},{"label":"Form view","permalink":"/tags/form-view","count":5},{"label":"Kanban view","permalink":"/tags/kanban-view","count":10},{"label":"Gallery view","permalink":"/tags/gallery-view","count":10},{"label":"Data sources","permalink":"/tags/data-sources","count":4},{"label":"UI ACL","permalink":"/tags/ui-acl","count":1},{"label":"Audit","permalink":"/tags/audit","count":2},{"label":"Edit","permalink":"/tags/edit","count":2},{"label":"Remove","permalink":"/tags/remove","count":1},{"label":"Visibility","permalink":"/tags/visibility","count":1},{"label":"Connect","permalink":"/tags/connect","count":1},{"label":"External","permalink":"/tags/external","count":2},{"label":"PG","permalink":"/tags/pg","count":2},{"label":"MySQL","permalink":"/tags/my-sql","count":2},{"label":"Sync","permalink":"/tags/sync","count":1},{"label":"Engineering","permalink":"/tags/engineering","count":8},{"label":"Fields","permalink":"/tags/fields","count":37},{"label":"Hide","permalink":"/tags/hide","count":1},{"label":"Display value","permalink":"/tags/display-value","count":2},{"label":"Sort","permalink":"/tags/sort","count":2},{"label":"Record Height","permalink":"/tags/record-height","count":2},{"label":"Field Width","permalink":"/tags/field-width","count":1},{"label":"Field types","permalink":"/tags/field-types","count":32},{"label":"Custom types","permalink":"/tags/custom-types","count":8},{"label":"Attachment","permalink":"/tags/attachment","count":1},{"label":"Barcode","permalink":"/tags/barcode","count":1},{"label":"Geometry","permalink":"/tags/geometry","count":1},{"label":"JSON","permalink":"/tags/json","count":4},{"label":"QR code","permalink":"/tags/qr-code","count":1},{"label":"Specific DB type","permalink":"/tags/specific-db-type","count":1},{"label":"Date & Time","permalink":"/tags/date-time","count":5},{"label":"Formula","permalink":"/tags/formula","count":6},{"label":"Links based types","permalink":"/tags/links-based-types","count":3},{"label":"Links","permalink":"/tags/links","count":1},{"label":"Lookup","permalink":"/tags/lookup","count":1},{"label":"Rollup","permalink":"/tags/rollup","count":1},{"label":"Numerical types","permalink":"/tags/numerical-types","count":4},{"label":"Currency","permalink":"/tags/currency","count":1},{"label":"Decimal","permalink":"/tags/decimal","count":1},{"label":"Number","permalink":"/tags/number","count":1},{"label":"Percent","permalink":"/tags/percent","count":1},{"label":"Checkbox","permalink":"/tags/checkbox","count":1},{"label":"Select based types","permalink":"/tags/select-based-types","count":2},{"label":"Multi select","permalink":"/tags/multi-select","count":1},{"label":"Rating","permalink":"/tags/rating","count":1},{"label":"Single select","permalink":"/tags/single-select","count":1},{"label":"Text based types","permalink":"/tags/text-based-types","count":5},{"label":"Email","permalink":"/tags/email","count":1},{"label":"Long text","permalink":"/tags/long-text","count":1},{"label":"Phone number","permalink":"/tags/phone-number","count":1},{"label":"Single line text","permalink":"/tags/single-line-text","count":1},{"label":"URL","permalink":"/tags/url","count":1},{"label":"Multi-fields editor","permalink":"/tags/multi-fields-editor","count":1},{"label":"Productivity hacks","permalink":"/tags/productivity-hacks","count":2},{"label":"Primary Key","permalink":"/tags/primary-key","count":1},{"label":"Getting Started","permalink":"/tags/getting-started","count":1},{"label":"Shortcuts","permalink":"/tags/shortcuts","count":2},{"label":"Records","permalink":"/tags/records","count":4},{"label":"Expanded record","permalink":"/tags/expanded-record","count":1},{"label":"Comments","permalink":"/tags/comments","count":1},{"label":"Table details","permalink":"/tags/table-details","count":1},{"label":"Table","permalink":"/tags/table","count":1},{"label":"Table operations","permalink":"/tags/table-operations","count":8},{"label":"Download","permalink":"/tags/download","count":1},{"label":"CSV","permalink":"/tags/csv","count":3},{"label":"Excel","permalink":"/tags/excel","count":3},{"label":"Reorder","permalink":"/tags/reorder","count":1},{"label":"Show/hide","permalink":"/tags/show-hide","count":1},{"label":"Cover image","permalink":"/tags/cover-image","count":1},{"label":"Filter","permalink":"/tags/filter","count":1},{"label":"Group by","permalink":"/tags/group-by","count":1},{"label":"Search","permalink":"/tags/search","count":1},{"label":"Tables","permalink":"/tags/tables","count":5},{"label":"Upload","permalink":"/tags/upload","count":1}]')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/576905f1.68b66089.js b/packages/noco-docs/dist/assets/js/576905f1.68b66089.js new file mode 100644 index 0000000000..cca2be30cd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/576905f1.68b66089.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5772],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>f});var o=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=o.createContext({}),c=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=c(e.components);return o.createElement(l.Provider,{value:n},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},u=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(t),u=r,f=d["".concat(l,".").concat(u)]||d[u]||m[u]||a;return t?o.createElement(f,i(i({ref:n},p),{},{components:t})):o.createElement(f,i({ref:n},p))}));function f(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[d]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var o=t(87462),r=(t(67294),t(3905));const a={title:"In Open Source",description:"This article explains specifics of User management in OSS.",tags:["Collaboration","Open Source"],keywords:["Collaboration","Open Source","User management","User permissions","User roles"]},i=void 0,s={unversionedId:"collaboration/oss-specific-details",id:"collaboration/oss-specific-details",title:"In Open Source",description:"This article explains specifics of User management in OSS.",source:"@site/docs/120.collaboration/050.oss-specific-details.md",sourceDirName:"120.collaboration",slug:"/collaboration/oss-specific-details",permalink:"/collaboration/oss-specific-details",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/050.oss-specific-details.md",tags:[{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Open Source",permalink:"/tags/open-source"}],version:"current",sidebarPosition:50,frontMatter:{title:"In Open Source",description:"This article explains specifics of User management in OSS.",tags:["Collaboration","Open Source"],keywords:["Collaboration","Open Source","User management","User permissions","User roles"]},sidebar:"tutorialSidebar",previous:{title:"Share view",permalink:"/collaboration/share-view"},next:{title:"Webhook overview",permalink:"/automation/webhook/webhook-overview"}},l={},c=[{value:"User Management",id:"user-management",level:2},{value:"Organisation Level Permissions:",id:"organisation-level-permissions",level:3},{value:"Base Level Permissions:",id:"base-level-permissions",level:3}],p={toc:c},d="wrapper";function m(e){let{components:n,...t}=e;return(0,r.kt)(d,(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Open source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces. And hence, the user management on Open source is different from Cloud hosted solutions. This article details the specifics of User management on Open source."),(0,r.kt)("h2",{id:"user-management"},"User Management"),(0,r.kt)("p",null,"Organisation is an workspace equivalent concept in Open-source NocoDB. An organisation can have multiple bases. Permissions within NocoDB are divided into two levels: ",(0,r.kt)("inlineCode",{parentName:"p"},"Organisation level")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"Base level"),"."),(0,r.kt)("h3",{id:"organisation-level-permissions"},"Organisation Level Permissions:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Org Level Creator"),": Allows users to create new bases and access invited bases."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Org Level Viewer"),": Allows users to access invited bases but does not permit the creation of new bases.")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/adf3610d-505d-44a2-9460-c33d23e89c66",alt:"Screenshot 2023-08-22 at 5 01 41 PM"})),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/e32a5739-2b84-45c4-a1a2-d2823448eda7",alt:"Screenshot 2023-08-22 at 5 01 30 PM"})),(0,r.kt)("h3",{id:"base-level-permissions"},"Base Level Permissions:"),(0,r.kt)("p",null,"The permissions at base level in Open source NocoDB remain same as cloud solutions. The base level permissions are summarized below:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Owner"),": The user who created the project. A project can have only one owner. The owner persists until the project exists and the role is non-transferable. The owner has access to carry out any operations within the project, including deleting it."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Creator"),': Has access to carry out any operations within the project except deleting the project and removing the "Owner."'),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Editor"),": Can modify data but cannot modify the schema (add/remove fields, tables, users, and such)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Commenter"),": Can neither modify data nor schema, can only see data and can mark record-level comments."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Viewer"),": Can only see data.")),(0,r.kt)("p",null,"Please note that the above-mentioned Base Level Permissions are additional to the already defined Organisation Level Permissions."),(0,r.kt)("p",null,"In addition to the previously defined permissions, NocoDB also includes the role of ",(0,r.kt)("inlineCode",{parentName:"p"},"Super Admin"),". The ",(0,r.kt)("inlineCode",{parentName:"p"},"Super Admin")," is the first user to sign up on this NocoDB installation. An organisation can have only one ",(0,r.kt)("inlineCode",{parentName:"p"},"Super Admin")," and this role is non-transferable. The ",(0,r.kt)("inlineCode",{parentName:"p"},"Super Admin"),' will have the equivalent permissions of an "Org Level Creator" and "Owner" for all projects within the organisation.'))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/58354ae8.85a279e2.js b/packages/noco-docs/dist/assets/js/58354ae8.85a279e2.js new file mode 100644 index 0000000000..b301c2a9e5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/58354ae8.85a279e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3164],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),g=o,m=d["".concat(s,".").concat(g)]||d[g]||u[g]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(87462),o=(n(67294),n(3905));const a={title:"Development setup",description:"How to set-up your development environment",tags:["Engineering"]},i=void 0,l={unversionedId:"engineering/development-setup",id:"engineering/development-setup",title:"Development setup",description:"How to set-up your development environment",source:"@site/docs/150.engineering/030.development-setup.md",sourceDirName:"150.engineering",slug:"/engineering/development-setup",permalink:"/engineering/development-setup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/030.development-setup.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:30,frontMatter:{title:"Development setup",description:"How to set-up your development environment",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"Repository structure",permalink:"/engineering/repository-structure"},next:{title:"Writing unit tests",permalink:"/engineering/unit-testing"}},s={},c=[{value:"Clone the repo",id:"clone-the-repo",level:2},{value:"Install dependencies",id:"install-dependencies",level:2},{value:"Start Frontend",id:"start-frontend",level:2},{value:"Start Backend",id:"start-backend",level:2},{value:"Enabling CI-CD for Draft PR",id:"enabling-ci-cd-for-draft-pr",level:2},{value:"Accessing CI-CD Failure Screenshots",id:"accessing-ci-cd-failure-screenshots",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"clone-the-repo"},"Clone the repo"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\n# change directory to the project root\ncd nocodb\n")),(0,o.kt)("h2",{id:"install-dependencies"},"Install dependencies"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# run from the project root\npnpm i\n")),(0,o.kt)("h2",{id:"start-frontend"},"Start Frontend"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# run from the project root\npnpm start:frontend\n# runs on port 3000\n")),(0,o.kt)("h2",{id:"start-backend"},"Start Backend"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# run from the project root\npnpm start:backend\n# runs on port 8080\n")),(0,o.kt)("p",null,"Any changes made to frontend and backend will be automatically reflected in the browser."),(0,o.kt)("h2",{id:"enabling-ci-cd-for-draft-pr"},"Enabling CI-CD for Draft PR"),(0,o.kt)("p",null,"CI-CD will be triggered on moving a PR from draft state to ",(0,o.kt)("inlineCode",{parentName:"p"},"Ready for review")," state & on pushing changes to ",(0,o.kt)("inlineCode",{parentName:"p"},"Develop"),". To verify CI-CD before requesting for review, add label ",(0,o.kt)("inlineCode",{parentName:"p"},"trigger-CI")," on Draft PR. "),(0,o.kt)("h2",{id:"accessing-ci-cd-failure-screenshots"},"Accessing CI-CD Failure Screenshots"),(0,o.kt)("p",null,"For Playwright tests, screenshots are captured on the tests. These will provide vital clues for debugging possible issues observed in CI-CD. To access screenshots, Open link associated with CI-CD run & click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Artifacts")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/192965070-dc04b952-70fb-4197-b4bd-ca7eda066e60.png",alt:"Screenshot 2022-09-29 at 12 43 37 PM"})))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5af3a857.77b6f910.js b/packages/noco-docs/dist/assets/js/5af3a857.77b6f910.js new file mode 100644 index 0000000000..ac30d589ce --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5af3a857.77b6f910.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8838],{3905:(e,t,i)=>{i.d(t,{Zo:()=>m,kt:()=>h});var r=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function n(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var s=r.createContext({}),d=function(e){var t=r.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):n(n({},t),e)),i},m=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),p=d(i),c=a,h=p["".concat(s,".").concat(c)]||p[c]||f[c]||o;return i?r.createElement(h,n(n({ref:t},m),{},{components:i})):r.createElement(h,n({ref:t},m))}));function h(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,n=new Array(o);n[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:a,n[1]=l;for(var d=2;d{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>f,frontMatter:()=>o,metadata:()=>l,toc:()=>d});var r=i(87462),a=(i(67294),i(3905));const o={title:"Form",description:"Learn how to create, import, and manage forms in NocoDB.",tags:["Views","Form view"],keywords:["NocoDB form","form view","form builder","form view builder","form view actions","form view operations"]},n=void 0,l={unversionedId:"views/view-types/form",id:"views/view-types/form",title:"Form",description:"Learn how to create, import, and manage forms in NocoDB.",source:"@site/docs/090.views/040.view-types/030.form.md",sourceDirName:"090.views/040.view-types",slug:"/views/view-types/form",permalink:"/views/view-types/form",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/040.view-types/030.form.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Form view",permalink:"/tags/form-view"}],version:"current",sidebarPosition:30,frontMatter:{title:"Form",description:"Learn how to create, import, and manage forms in NocoDB.",tags:["Views","Form view"],keywords:["NocoDB form","form view","form builder","form view builder","form view actions","form view operations"]},sidebar:"tutorialSidebar",previous:{title:"Gallery",permalink:"/views/view-types/gallery"},next:{title:"Kanban",permalink:"/views/view-types/kanban"}},s={},d=[{value:"Form View Builder",id:"form-view-builder",level:2},{value:"Form View Actions",id:"form-view-actions",level:2},{value:"Form View Operations",id:"form-view-operations",level:2},{value:"Add Form Title & Description",id:"add-form-title--description",level:3},{value:"Add Fields to the Form",id:"add-fields-to-the-form",level:3},{value:"Change field label & help-text",id:"change-field-label--help-text",level:3},{value:"Mark a Field as Required",id:"mark-a-field-as-required",level:3},{value:"Rearrange Fields Within the Form",id:"rearrange-fields-within-the-form",level:3},{value:"Remove Fields from the Form",id:"remove-fields-from-the-form",level:3},{value:"Add a New Field to the Table",id:"add-a-new-field-to-the-table",level:3},{value:"Form View Settings",id:"form-view-settings",level:3},{value:"Survey Form View",id:"survey-form-view",level:2},{value:"Related articles",id:"related-articles",level:2}],m={toc:d},p="wrapper";function f(e){let{components:t,...o}=e;return(0,a.kt)(p,(0,r.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Form View allows you to arrange fields in a form to input data."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"1010-2 Form",src:i(36374).Z,width:"2880",height:"1800"})),(0,a.kt)("h2",{id:"form-view-builder"},"Form View Builder"),(0,a.kt)("p",null,"Form view builder layout can be divided into 3 sections:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Fields Area")," - This is the area where fields available in the tables that are not yet added to the form are listed. "),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Form Area")," - This is the area where fields added to the form are listed."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Form Settings")," - This is the area where you can configure the form view. This mainly consists of actions & customisations that can be performed after a form view is submitted.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Form Builder",src:i(85994).Z,width:"2880",height:"1800"})),(0,a.kt)("h2",{id:"form-view-actions"},"Form View Actions"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/create-view/#create-new-view"},"Create a New Form View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#rename-view"},"Rename an Existing Form View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#duplicate-view"},"Duplicate a Form View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/actions-on-view#delete-view"},"Remove a Form View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/share-view"},"Share a Form View")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("a",{parentName:"li",href:"/views/views-overview#view-permission-types"},"Lock Form View for Edits"))),(0,a.kt)("h2",{id:"form-view-operations"},"Form View Operations"),(0,a.kt)("h3",{id:"add-form-title--description"},"Add Form Title & Description"),(0,a.kt)("p",null,"In the ",(0,a.kt)("strong",{parentName:"p"},"Form View")," area, click on in input boxes provided for ",(0,a.kt)("strong",{parentName:"p"},"Title")," <1> & ",(0,a.kt)("strong",{parentName:"p"},"Description")," <2> to add/update title & description to the form."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Form Title & Description",src:i(8037).Z,width:"2880",height:"1800"})),(0,a.kt)("h3",{id:"add-fields-to-the-form"},"Add Fields to the Form"),(0,a.kt)("p",null,"To add a field to the form, either"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Drag and drop the field from the ",(0,a.kt)("strong",{parentName:"li"},"Fields Area")," to the ",(0,a.kt)("strong",{parentName:"li"},"Form Area")," at required position"),(0,a.kt)("li",{parentName:"ul"},"Click on the field in the ",(0,a.kt)("strong",{parentName:"li"},"Fields Area")," to add it to the end of the ",(0,a.kt)("strong",{parentName:"li"},"Form Area"))),(0,a.kt)("h3",{id:"change-field-label--help-text"},"Change field label & help-text"),(0,a.kt)("p",null,"To change the field label displayed on the form & add help-text, click on the field in the ",(0,a.kt)("strong",{parentName:"p"},"Form Area")," and update the values in the input boxes provided for ",(0,a.kt)("strong",{parentName:"p"},"Label")," <1> & ",(0,a.kt)("strong",{parentName:"p"},"Help Text")," <2>."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Field Label & Help Text",src:i(69990).Z,width:"2880",height:"1800"})),(0,a.kt)("h3",{id:"mark-a-field-as-required"},"Mark a Field as Required"),(0,a.kt)("p",null,"To mark a field as required, click on the field in the ",(0,a.kt)("strong",{parentName:"p"},"Form Area")," and toggle the ",(0,a.kt)("inlineCode",{parentName:"p"},"Required")," switch."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Required Field",src:i(17750).Z,width:"2880",height:"1800"})),(0,a.kt)("h3",{id:"rearrange-fields-within-the-form"},"Rearrange Fields Within the Form"),(0,a.kt)("p",null,"To rearrange fields within the form, drag and drop the field to the required position."),(0,a.kt)("h3",{id:"remove-fields-from-the-form"},"Remove Fields from the Form"),(0,a.kt)("p",null,"To remove a field from the form, either"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Drag and drop the field from the ",(0,a.kt)("strong",{parentName:"li"},"Form Area")," to the ",(0,a.kt)("strong",{parentName:"li"},"Fields Area")),(0,a.kt)("li",{parentName:"ul"},"Hover over the field in the ",(0,a.kt)("strong",{parentName:"li"},"Form Area")," and click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"hide")," icon")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Hide Field",src:i(9011).Z,width:"2880",height:"1800"})),(0,a.kt)("h3",{id:"add-a-new-field-to-the-table"},"Add a New Field to the Table"),(0,a.kt)("p",null,"To add a new field to the table, "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"+ Add new field to this table")," in the ",(0,a.kt)("strong",{parentName:"li"},"Fields Area")," and "),(0,a.kt)("li",{parentName:"ul"},"Select the field name & type from the dropdown."),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Save Field"))),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Add Field",src:i(95727).Z,width:"2880",height:"1800"})),(0,a.kt)("h3",{id:"form-view-settings"},"Form View Settings"),(0,a.kt)("p",null,"NocoDB allows you to configure the form view to perform various actions after a form is submitted. These actions can be configured in the ",(0,a.kt)("strong",{parentName:"p"},"Form Settings")," area."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"After Submit Message"),": You can configure a message to display on successful submission of the form."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Show ",(0,a.kt)("inlineCode",{parentName:"strong"},"Submit Another Form")," Button"),": This option when enabled, will display a ",(0,a.kt)("inlineCode",{parentName:"li"},"Submit Another Form")," button after the form is submitted."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Show a Blank form"),": This option when enabled, will display a new blank form 5 seconds after the form is submitted."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("strong",{parentName:"li"},"Email me"),": Enable this option to receive an Email after the form is submitted. ")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Form View Settings",src:i(13742).Z,width:"2880",height:"1800"})),(0,a.kt)("h2",{id:"survey-form-view"},"Survey Form View"),(0,a.kt)("p",null,"NocoDB supports a special type of form view called ",(0,a.kt)("inlineCode",{parentName:"p"},"Survey Form View"),". This view is ideal for creating surveys & questionnaires. This view can be enabled by toggling the ",(0,a.kt)("inlineCode",{parentName:"p"},"Survey Mode")," switch when creating ",(0,a.kt)("a",{parentName:"p",href:"/views/share-view#share-form-view-options"},"shared form view"),". "),(0,a.kt)("p",null,"When enabled, "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Form input fields will be displayed one at a time. "),(0,a.kt)("li",{parentName:"ul"},"Users can navigate between fields using the ",(0,a.kt)("inlineCode",{parentName:"li"},"<")," & ",(0,a.kt)("inlineCode",{parentName:"li"},">")," buttons.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Survey Form View",src:i(46359).Z,width:"2878",height:"1416"})),(0,a.kt)("h2",{id:"related-articles"},"Related articles"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"/views/view-types/grid"},"Form View"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"/views/view-types/gallery"},"Gallery View"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"/views/view-types/kanban"},"Kanban View")))}f.isMDXComponent=!0},95727:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-add-field-26399d5da0f299a76f045286f4b70690.png"},69990:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-field-label-help-text-aa69425b678df2503add4a96f926e238.png"},85994:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-layout-348a2dba9c9ceafe6911477b7e530283.png"},9011:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-remove-field-efc0f8d307ab234bfea21fa9c467dfd6.png"},17750:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-required-field-62f44205bdd070ef8c4c8d30de181286.png"},13742:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-settings-f765389d102cecdac46b0258b696344f.png"},8037:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-title-description-99d122bea09868f65bd0f6e04e087db4.png"},36374:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/form-view-94e8ab4d97828f668019451e303409c0.png"},46359:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/survey-form-ba422967e0b347d42b4824e8940b064c.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5c9cf4c7.125f1c65.js b/packages/noco-docs/dist/assets/js/5c9cf4c7.125f1c65.js new file mode 100644 index 0000000000..0261697cef --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5c9cf4c7.125f1c65.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5187],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var c=n.createContext({}),s=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(a),m=o,g=d["".concat(c,".").concat(m)]||d[m]||u[m]||r;return a?n.createElement(g,l(l({ref:t},p),{},{components:a})):n.createElement(g,l({ref:t},p))}));function g(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,l=new Array(r);l[0]=m;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[d]="string"==typeof e?e:o,l[1]=i;for(var s=2;s{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>r,metadata:()=>i,toc:()=>s});var n=a(87462),o=(a(67294),a(3905));const r={title:"Installation",description:"Simple installation - takes about three minutes!"},l=void 0,i={unversionedId:"getting-started/installation",id:"version-0.109.7/getting-started/installation",title:"Installation",description:"Simple installation - takes about three minutes!",source:"@site/versioned_docs/version-0.109.7/020.getting-started/010.installation.md",sourceDirName:"020.getting-started",slug:"/getting-started/installation",permalink:"/0.109.7/getting-started/installation",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/020.getting-started/010.installation.md",tags:[],version:"0.109.7",sidebarPosition:10,frontMatter:{title:"Installation",description:"Simple installation - takes about three minutes!"},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/0.109.7/"},next:{title:"Environment Variables",permalink:"/0.109.7/getting-started/environment-variables"}},c={},s=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Quick try",id:"quick-try",level:2},{value:"Docker",id:"docker",level:3},{value:"Docker Compose",id:"docker-compose",level:3},{value:"NPX",id:"npx",level:3},{value:"Preview:",id:"preview",level:4},{value:"Homebrew",id:"homebrew",level:3},{value:"Executables",id:"executables",level:3},{value:"MacOS (x64)",id:"macos-x64",level:5},{value:"MacOS (arm64)",id:"macos-arm64",level:5},{value:"Linux (x64)",id:"linux-x64",level:5},{value:"Linux (arm64)",id:"linux-arm64",level:5},{value:"Windows (x64)",id:"windows-x64",level:5},{value:"Windows (arm64)",id:"windows-arm64",level:5},{value:"Node Application",id:"node-application",level:3},{value:"AWS ECS (Fargate)",id:"aws-ecs-fargate",level:3},{value:"Create ECS Cluster",id:"create-ecs-cluster",level:4},{value:"Create Log group",id:"create-log-group",level:4},{value:"Create ECS Task Definiton",id:"create-ecs-task-definiton",level:4},{value:"Create ECS Service",id:"create-ecs-service",level:4},{value:"GCP (Cloud Run)",id:"gcp-cloud-run",level:3},{value:"Pull NocoDB Image on Cloud Shell",id:"pull-nocodb-image-on-cloud-shell",level:4},{value:"Deploy NocoDB on Cloud Run",id:"deploy-nocodb-on-cloud-run",level:4},{value:"DigitalOcean (App)",id:"digitalocean-app",level:3},{value:"Create Apps",id:"create-apps",level:4},{value:"Choose Source: Docker Hub",id:"choose-source-docker-hub",level:4},{value:"Choose Source: Repository",id:"choose-source-repository",level:4},{value:"Optional Additional Configurations",id:"optional-additional-configurations",level:4},{value:"Name your web service",id:"name-your-web-service",level:4},{value:"Finalize and Launch",id:"finalize-and-launch",level:4},{value:"Cloudron",id:"cloudron",level:3},{value:"Navigate to App Store",id:"navigate-to-app-store",level:4},{value:"Search NocoDB",id:"search-nocodb",level:4},{value:"Click Install",id:"click-install",level:4},{value:"Configure NocoDB",id:"configure-nocodb",level:4},{value:"Go to My App and Launch NocoDB",id:"go-to-my-app-and-launch-nocodb",level:4},{value:"CapRover",id:"caprover",level:3},{value:"Login and Click One-Click Apps / Databases",id:"login-and-click-one-click-apps--databases",level:4},{value:"Search NocoDB",id:"search-nocodb-1",level:4},{value:"Configure NocoDB and Deploy",id:"configure-nocodb-and-deploy",level:4},{value:"Railway",id:"railway",level:3},{value:"Navigate to Templates",id:"navigate-to-templates",level:4},{value:"Configure NocoDB and Deploy",id:"configure-nocodb-and-deploy-1",level:4},{value:"FreeBSD / FreeNAS / TrueNAS Jail",id:"freebsd--freenas--truenas-jail",level:3},{value:"Sample Demos",id:"sample-demos",level:2},{value:"Code Sandbox",id:"code-sandbox",level:3},{value:"Docker deploying with one command",id:"docker-deploying-with-one-command",level:3},{value:"Using NPX",id:"using-npx",level:3}],p=e=>function(t){return console.warn("Component "+e+" was not imported, exported, or provided by MDXProvider as global scope"),(0,o.kt)("div",t)},d=p("Tabs"),u=p("TabItem"),m={toc:s},g="wrapper";function k(e){let{components:t,...a}=e;return(0,o.kt)(g,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Simple installation - takes about three minutes!"),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://www.docker.com/get-started"},"Docker")," or ",(0,o.kt)("a",{parentName:"li",href:"https://nodejs.org/en/download"},"Node.js")," ( > v16.x )\n")),(0,o.kt)("h2",{id:"quick-try"},"Quick try"),(0,o.kt)("h3",{id:"docker"},"Docker"),(0,o.kt)("p",null,"If you are a Docker user, you may try this way!"),(0,o.kt)(d,{mdxType:"Tabs"},(0,o.kt)(u,{value:"sqlite",label:"SQLite",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\nnocodb/nocodb:latest\n'))),(0,o.kt)(u,{value:"mysql",label:"MySQL",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-mysql \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="mysql2://host.docker.internal:3306?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n'))),(0,o.kt)(u,{value:"postgres",label:"Postgres",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-postgres \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n'))),(0,o.kt)(u,{value:"sqlserver",label:"SQL Server",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d --name nocodb-mssql \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="mssql://host.docker.internal:1433?u=root&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\n')))),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To persist data in docker you can mount volume at ",(0,o.kt)("inlineCode",{parentName:"p"},"/usr/app/data/")," since 0.10.6. In older version mount at ",(0,o.kt)("inlineCode",{parentName:"p"},"/usr/src/app"),". Otherwise your data will be lost after recreating the container.")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/issues/1340#issuecomment-1049481043"},"MySQL Docker"),".")),(0,o.kt)("h3",{id:"docker-compose"},"Docker Compose"),(0,o.kt)("p",null,"We provide different docker-compose.yml files under ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/tree/master/docker-compose"},"this directory"),". Here are some examples."),(0,o.kt)(d,{mdxType:"Tabs"},(0,o.kt)(u,{value:"mysql",label:"MySQL",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/mysql\ndocker-compose up -d\n"))),(0,o.kt)(u,{value:"postgres",label:"Postgres",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/pg\ndocker-compose up -d\n"))),(0,o.kt)(u,{value:"sqlserver",label:"SQL Server",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb\ncd nocodb/docker-compose/mssql\ndocker-compose up -d\n")))),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"To persist data in docker you can mount volume at ",(0,o.kt)("inlineCode",{parentName:"p"},"/usr/app/data/")," since 0.10.6. In older version mount at ",(0,o.kt)("inlineCode",{parentName:"p"},"/usr/src/app"),".")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/issues/1313#issuecomment-1046625974"},"MySQL Docker Compose"),".")),(0,o.kt)("h3",{id:"npx"},"NPX"),(0,o.kt)("p",null,"You can run below command if you need an interactive configuration."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"npx create-nocodb-app\n")),(0,o.kt)("h4",{id:"preview"},"Preview:"),(0,o.kt)("img",{width:"587",alt:"image",src:"https://user-images.githubusercontent.com/35857179/161526235-5ee0d592-0105-4a57-aa53-b1048dca6aad.png"}),(0,o.kt)("h3",{id:"homebrew"},"Homebrew"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"brew tap nocodb/nocodb\nbrew install nocodb\nnocodb\n")),(0,o.kt)("h3",{id:"executables"},"Executables"),(0,o.kt)("p",null,"You can download executables directly and run without any extra dependancy. Use the right command based on your platform."),(0,o.kt)("h5",{id:"macos-x64"},"MacOS (x64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/macos-x64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n")),(0,o.kt)("h5",{id:"macos-arm64"},"MacOS (arm64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/macos-arm64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n")),(0,o.kt)("h5",{id:"linux-x64"},"Linux (x64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/linux-x64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n")),(0,o.kt)("h5",{id:"linux-arm64"},"Linux (arm64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"curl http://get.nocodb.com/linux-arm64 -o nocodb -L \\\n && chmod +x nocodb \\\n && ./nocodb\n")),(0,o.kt)("h5",{id:"windows-x64"},"Windows (x64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"iwr http://get.nocodb.com/win-x64.exe\n.\\Noco-win-x64.exe\n")),(0,o.kt)("h5",{id:"windows-arm64"},"Windows (arm64)"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"iwr http://get.nocodb.com/win-arm64.exe\n.\\Noco-win-arm64.exe\n")),(0,o.kt)("h3",{id:"node-application"},"Node Application"),(0,o.kt)("p",null,"We provide a simple NodeJS Application for getting started."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/nocodb/nocodb-seed\ncd nocodb-seed\nnpm install\nnpm start\n")),(0,o.kt)("h3",{id:"aws-ecs-fargate"},"AWS ECS (Fargate)"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"create-ecs-cluster"},"Create ECS Cluster"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"aws ecs create-cluster \\\n--cluster-name \n")),(0,o.kt)("h4",{id:"create-log-group"},"Create Log group"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"aws logs create-log-group \\\n--log-group-name /ecs//\n")),(0,o.kt)("h4",{id:"create-ecs-task-definiton"},"Create ECS Task Definiton"),(0,o.kt)("p",null," Every time you create it, it will add a new version. If it is not existing, the version will be 1. "),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'aws ecs register-task-definition \\\n--cli-input-json "file://./.json"\n')),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"This json file defines the container specification. You can define secrets such as NC_DB and environment variables here.")),(0,o.kt)("p",null," Here's the sample Task Definition"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "family": "nocodb-sample-task-def",\n "networkMode": "awsvpc",\n "containerDefinitions": [{\n "name": "",\n "image": "nocodb/nocodb:latest",\n "essential": true,\n "logConfiguration": {\n "logDriver": "awslogs",\n "options": {\n "awslogs-group": "/ecs//",\n "awslogs-region": "",\n "awslogs-stream-prefix": "ecs"\n }\n },\n "secrets": [{\n "name": "",\n "valueFrom": ""\n }],\n "environment": [{\n "name": "",\n "value": ""\n }],\n "portMappings": [{\n "containerPort": 8080,\n "hostPort": 8080,\n "protocol": "tcp"\n }]\n }],\n "requiresCompatibilities": [\n "FARGATE"\n ],\n "cpu": "256",\n "memory": "512",\n "executionRoleArn": "",\n "taskRoleArn": ""\n}\n')),(0,o.kt)("h4",{id:"create-ecs-service"},"Create ECS Service"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'aws ecs create-service \\\n--cluster \\\n--service-name \\\n--task-definition : \\\n--desired-count \\\n--launch-type "FARGATE" \\\n--platform-version \\\n--health-check-grace-period-seconds \\\n--network-configuration "awsvpcConfiguration={subnets=[""], securityGroups=[""], assignPublicIp=ENABLED}" \\\n--load-balancer targetGroupArn=,containerName=,containerPort=\n')),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"If your service fails to start, you may check the logs in ECS console or in Cloudwatch. Generally it fails due to the connection between ECS container and NC_DB. Make sure the security groups have the correct inbound and outbound rules.\n"))),(0,o.kt)("h3",{id:"gcp-cloud-run"},"GCP (Cloud Run)"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"pull-nocodb-image-on-cloud-shell"},"Pull NocoDB Image on Cloud Shell"),(0,o.kt)("p",null," Since Cloud Run only supports images from Google Container Registry (GCR) or Artifact Registry, we need to pull NocoDB image, tag it and push it in GCP using Cloud Shell. Here are some sample commands which you can execute in Cloud Shell."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# pull latest NocoDB image\ndocker pull nocodb/nocodb:latest\n\n# tag the image\ndocker tag nocodb/nocodb:latest gcr.io//nocodb/nocodb:latest\n\n# push the image to GCR\ndocker push gcr.io//nocodb/nocodb:latest\n")),(0,o.kt)("h4",{id:"deploy-nocodb-on-cloud-run"},"Deploy NocoDB on Cloud Run"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"gcloud run deploy --image=gcr.io//nocodb/nocodb:latest \\\n --region=us-central1 \\\n --allow-unauthenticated \\\n --platform=managed \n"))),(0,o.kt)("h3",{id:"digitalocean-app"},"DigitalOcean (App)"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"create-apps"},"Create Apps"),(0,o.kt)("p",null," On Home page, Click on Create icon & Select Apps (Deploy your code)."),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790558-f8fe5580-5a58-412c-9c2e-145587712bf2.png",alt:"Screenshot 2022-02-19 at 12 17 43 PM"})),(0,o.kt)("h4",{id:"choose-source-docker-hub"},"Choose Source: Docker Hub"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790563-b5b6d5b4-0bdc-4718-8cea-0a7ee52f283b.png",alt:"Screenshot 2022-02-19 at 12 22 01 PM"})),(0,o.kt)("h4",{id:"choose-source-repository"},"Choose Source: Repository"),(0,o.kt)("p",null," Configure Source Repository as ",(0,o.kt)("inlineCode",{parentName:"p"},"nocodb/nocodb"),". Optionally you can pick release tag if you are interested in specific NocoDB version."),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790564-1dcb5e33-3a57-471a-a44c-835a410a0cb7.png",alt:"Screenshot 2022-02-19 at 12 23 11 PM"})),(0,o.kt)("h4",{id:"optional-additional-configurations"},"[Optional]"," Additional Configurations"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790565-c0234b2e-ad50-4042-90b6-4f8798f1d585.png",alt:"Screenshot 2022-02-19 at 12 24 44 PM"})),(0,o.kt)("h4",{id:"name-your-web-service"},"Name your web service"),(0,o.kt)("p",null," Pick a name for your NocoDB application. This name will become part of URL subsequently\nPick nearest Region for cloud hosting\n",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790567-a6e65e4e-9aa0-4edb-998e-da8803ad6e23.png",alt:"Screenshot 2022-02-19 at 12 28 11 PM"})),(0,o.kt)("h4",{id:"finalize-and-launch"},"Finalize and Launch"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Select hosting plan for your NocoDB application")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},'Click "Launch APP"'),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154790570-62044713-5cca-4d06-82ec-f3cc257218a1.png",alt:"Screenshot 2022-02-19 at 12 29 23 PM"})),(0,o.kt)("p",{parentName:"li"},"Application will be build & URL will be live in a minute! The URL will be something like ",(0,o.kt)("a",{parentName:"p",href:"https://simply-nocodb-rsyir.ondigitalocean.app/"},"https://simply-nocodb-rsyir.ondigitalocean.app/"))))),(0,o.kt)("h3",{id:"cloudron"},"Cloudron"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"navigate-to-app-store"},"Navigate to App Store"),(0,o.kt)("p",null," Log into Cloudron and select App Store"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700146-aae90503-a8fd-4bc5-8397-39f0bc279606.png",alt:"image"})),(0,o.kt)("h4",{id:"search-nocodb"},"Search NocoDB"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700181-b5303919-70b8-4cf8-bebe-7e75aca601f3.png",alt:"image"})),(0,o.kt)("h4",{id:"click-install"},"Click Install"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700192-d702f5c2-2afa-45c5-9823-4ebe9e141b01.png",alt:"image"})),(0,o.kt)("h4",{id:"configure-nocodb"},"Configure NocoDB"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700230-c35e934f-bd93-4948-8f31-935483b30571.png",alt:"image"})),(0,o.kt)("h4",{id:"go-to-my-app-and-launch-nocodb"},"Go to My App and Launch NocoDB"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194700464-50098cb1-bf94-42bb-a63a-cc0aad671913.png",alt:"image"}))),(0,o.kt)("h3",{id:"caprover"},"CapRover"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"login-and-click-one-click-apps--databases"},"Login and Click One-Click Apps / Databases"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701420-7fe5c396-a488-456c-98de-6f2ee1151fc5.png",alt:"image"})),(0,o.kt)("h4",{id:"search-nocodb-1"},"Search NocoDB"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701537-63e7efc5-013b-4ca9-8659-56e9d536e7d0.png",alt:"image"})),(0,o.kt)("h4",{id:"configure-nocodb-and-deploy"},"Configure NocoDB and Deploy"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194701576-19519df5-2aa4-435d-8fc6-7bc684b9cfe1.png",alt:"image"}))),(0,o.kt)("h3",{id:"railway"},"Railway"),(0,o.kt)("details",null,(0,o.kt)("summary",null,"Click to Expand"),(0,o.kt)("h4",{id:"navigate-to-templates"},"Navigate to Templates"),(0,o.kt)("p",null," Go to ",(0,o.kt)("a",{parentName:"p",href:"https://railway.app/templates"},"Templates"),", Search NocoDB and click Deploy"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194702833-1bea22ee-6dfa-4024-ac27-e33fe56e5500.png",alt:"image"})),(0,o.kt)("h4",{id:"configure-nocodb-and-deploy-1"},"Configure NocoDB and Deploy"),(0,o.kt)("p",null," ",(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194702960-149393fe-b00f-4d84-9e54-22cb7616ba44.png",alt:"image"}))),(0,o.kt)("h3",{id:"freebsd--freenas--truenas-jail"},"FreeBSD / FreeNAS / TrueNAS Jail"),(0,o.kt)("p",null,"See ",(0,o.kt)("a",{parentName:"p",href:"https://gist.github.com/Zamana/e9281d736f9e9ce5882c6f4b140a590e"},"here")," provided by ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/Zamana"},"C. R. Zamana"),"."),(0,o.kt)("h2",{id:"sample-demos"},"Sample Demos"),(0,o.kt)("h3",{id:"code-sandbox"},"Code Sandbox"),(0,o.kt)("iframe",{width:"100%",height:"500",src:"https://codesandbox.io/embed/vigorous-firefly-80kq5?hidenavigation=1&theme=dark",title:"Code Sandbox",frameBorder:"0",allow:"clipboard-write"}),(0,o.kt)("h3",{id:"docker-deploying-with-one-command"},"Docker deploying with one command"),(0,o.kt)("iframe",{width:"100%",height:"500",src:"https://www.youtube.com/embed/K-UEecQyiOk",title:"YouTube video player",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0}),(0,o.kt)("h3",{id:"using-npx"},"Using NPX"),(0,o.kt)("iframe",{width:"100%",height:"500",src:"https://www.youtube.com/embed/v6Nn75P1p7I",title:"YouTube video player",frameBorder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0}))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5ccd3149.73f6caf1.js b/packages/noco-docs/dist/assets/js/5ccd3149.73f6caf1.js new file mode 100644 index 0000000000..2ca1d0f15b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5ccd3149.73f6caf1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4033],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>g});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var o=n.createContext({}),p=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(a),h=i,g=d["".concat(o,".").concat(h)]||d[h]||u[h]||r;return a?n.createElement(g,l(l({ref:t},c),{},{components:a})):n.createElement(g,l({ref:t},c))}));function g(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,l=new Array(r);l[0]=h;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[d]="string"==typeof e?e:i,l[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var n=a(87462),i=(a(67294),a(3905));const r={title:"Playwright E2E Testing",description:"Overview to playwright based e2e tests"},l=void 0,s={unversionedId:"engineering/playwright",id:"version-0.109.7/engineering/playwright",title:"Playwright E2E Testing",description:"Overview to playwright based e2e tests",source:"@site/versioned_docs/version-0.109.7/050.engineering/050.playwright.md",sourceDirName:"050.engineering",slug:"/engineering/playwright",permalink:"/0.109.7/engineering/playwright",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/050.playwright.md",tags:[],version:"0.109.7",sidebarPosition:50,frontMatter:{title:"Playwright E2E Testing",description:"Overview to playwright based e2e tests"},sidebar:"tutorialSidebar",previous:{title:"Writing Unit Tests",permalink:"/0.109.7/engineering/unit-testing"},next:{title:"Releases & Builds",permalink:"/0.109.7/engineering/builds-and-releases"}},o={},p=[{value:"How to run tests",id:"how-to-run-tests",level:2},{value:"Run Test Server",id:"run-test-server",level:3},{value:"Running all tests",id:"running-all-tests",level:3},{value:"Running individual tests",id:"running-individual-tests",level:3},{value:"Concepts",id:"concepts",level:2},{value:"Independent tests",id:"independent-tests",level:3},{value:"What to test",id:"what-to-test",level:3},{value:"Playwright",id:"playwright",level:3},{value:"Page Objects",id:"page-objects",level:2},{value:"Writing a test",id:"writing-a-test",level:2},{value:"Create a test suite",id:"create-a-test-suite",level:3},{value:"Create a page object",id:"create-a-page-object",level:3},{value:"Writing an action method",id:"writing-an-action-method",level:3},{value:"Writing an assertion/verification method",id:"writing-an-assertionverification-method",level:3},{value:"Tips to avoid flakiness",id:"tips-to-avoid-flakiness",level:2},{value:"Accessing playwright report in the CI",id:"accessing-playwright-report-in-the-ci",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,i.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"how-to-run-tests"},"How to run tests"),(0,i.kt)("p",null,"All the tests reside in ",(0,i.kt)("inlineCode",{parentName:"p"},"tests/playwright")," folder."),(0,i.kt)("p",null,"Make sure to install the dependencies(in the playwright folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm install\nnpx playwright install chromium --with-deps\n")),(0,i.kt)("h3",{id:"run-test-server"},"Run Test Server"),(0,i.kt)("p",null,"Start the backend test server (in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb")," folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm run watch:run:playwright\n")),(0,i.kt)("p",null,"Start the frontend test server (in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nc-gui")," folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"NUXT_PAGE_TRANSITION_DISABLE=true npm run dev\n")),(0,i.kt)("h3",{id:"running-all-tests"},"Running all tests"),(0,i.kt)("p",null,"For selecting db type, rename ",(0,i.kt)("inlineCode",{parentName:"p"},".env.example")," to ",(0,i.kt)("inlineCode",{parentName:"p"},".env")," and set ",(0,i.kt)("inlineCode",{parentName:"p"},"E2E_DEV_DB_TYPE")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"sqlite"),"(default), ",(0,i.kt)("inlineCode",{parentName:"p"},"mysql")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"pg"),"."),(0,i.kt)("p",null,"headless mode(without opening browser):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm run test\n")),(0,i.kt)("p",null,"with browser:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm run test:debug\n")),(0,i.kt)("p",null,"For setting up mysql(sakila):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose -f ./tests/playwright/scripts/docker-compose-mysql-playwright.yml up -d\n")),(0,i.kt)("p",null,"For setting up postgres(sakila):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose -f ./tests/playwright/scripts/docker-compose-playwright-pg.yml \n")),(0,i.kt)("h3",{id:"running-individual-tests"},"Running individual tests"),(0,i.kt)("p",null,"Add ",(0,i.kt)("inlineCode",{parentName:"p"},".only")," to the test you want to run:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"test.only('should login', async ({ page }) => {\n // ...\n})\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm run test\n")),(0,i.kt)("h2",{id:"concepts"},"Concepts"),(0,i.kt)("h3",{id:"independent-tests"},"Independent tests"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"All tests are independent of each other."),(0,i.kt)("li",{parentName:"ul"},"Each test starts with a fresh project with a fresh sakila database(option to not use sakila db is also there)."),(0,i.kt)("li",{parentName:"ul"},"Each test creates a new user(email as ",(0,i.kt)("inlineCode",{parentName:"li"},"user@nocodb.com"),") and logs in with that user to the dashboard.")),(0,i.kt)("p",null,"Caveats:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Some stuffs are shared i.e, users, plugins etc. So be catious while writing tests touching that. A fix for this is in the works."),(0,i.kt)("li",{parentName:"ul"},"In test, we prefix email and project with the test id, which will be deleted after the test is done.")),(0,i.kt)("h3",{id:"what-to-test"},"What to test"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"UI verification. This includes verifying the state of the UI element, i.e if the element is visible, if the element has a particular text etc."),(0,i.kt)("li",{parentName:"ul"},"Test should verify all user flow. A test has a default timeout of 60 seconds. If a test is taking more than 60 seconds, it is a sign that the test should be broken down into smaller tests."),(0,i.kt)("li",{parentName:"ul"},"Test should also verify all the side effects the feature(i.e. On adding a new column type, should verify column deletion as well) will have, and also error cases."),(0,i.kt)("li",{parentName:"ul"},"Test name should be descriptive. It should be easy to understand what the test is doing by just reading the test name.")),(0,i.kt)("h3",{id:"playwright"},"Playwright"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Playwright is a nodejs library for automating chromium, firefox and webkit."),(0,i.kt)("li",{parentName:"ul"},"For each test, a new browser context is created. This means that each test runs in a new incognito window."),(0,i.kt)("li",{parentName:"ul"},"For assertion always use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"li"},"@playwright/test")," library. This library provides a lot of useful assertions, which also has retry logic built in.")),(0,i.kt)("h2",{id:"page-objects"},"Page Objects"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Page objects are used to abstract over the components/page. This makes the tests more readable and maintainable."),(0,i.kt)("li",{parentName:"ul"},"All page objects are in ",(0,i.kt)("inlineCode",{parentName:"li"},"tests/playwright/pages")," folder."),(0,i.kt)("li",{parentName:"ul"},"All the test related code should be in page objects."),(0,i.kt)("li",{parentName:"ul"},"Methods should be as thin as possible and its better to have multiple methods than one big method, which improves reusability.")),(0,i.kt)("p",null,"The methods of a page object can be classified into 2 categories:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Actions: Performs an UI actions like click, type, select etc. Is also responsible for waiting for the element to be ready and the action to be performed. This included waiting for API calls to complete."),(0,i.kt)("li",{parentName:"ul"},"Assertions: Asserts the state of the UI element, i.e if the element is visible, if the element has a particular text etc. Use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"li"},"@playwright/test")," and if not use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect.poll")," to wait for the assertion to pass.")),(0,i.kt)("h2",{id:"writing-a-test"},"Writing a test"),(0,i.kt)("p",null,"Let's write a test for testing filter functionality."),(0,i.kt)("p",null,"For simplicity, we will have ",(0,i.kt)("inlineCode",{parentName:"p"},"DashboardPage")," implemented, which will have all the methods related to dashboard page and also its child components like Grid, etc."),(0,i.kt)("h3",{id:"create-a-test-suite"},"Create a test suite"),(0,i.kt)("p",null,"Create a new file ",(0,i.kt)("inlineCode",{parentName:"p"},"filter.spec.ts")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"tests/playwright/tests")," folder and use ",(0,i.kt)("inlineCode",{parentName:"p"},"setup")," method to create a new project and user."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"import { test, expect } from '@playwright/test';\nimport setup, { NcContext } from '../setup';\n\ntest.describe('Filter', () => {\n let context: NcContext;\n\n test.beforeEach(async ({ page }) => {\n context = await setup({ page });\n })\n\n test('should filter', async ({ page }) => {\n // ...\n });\n});\n")),(0,i.kt)("h3",{id:"create-a-page-object"},"Create a page object"),(0,i.kt)("p",null,"Since filter is UI wise scoped to a ",(0,i.kt)("inlineCode",{parentName:"p"},"Toolbar")," , we will add filter page object to ",(0,i.kt)("inlineCode",{parentName:"p"},"ToolbarPage")," page object."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"export class ToolbarPage extends BasePage {\n readonly parent: GridPage | GalleryPage | FormPage | KanbanPage;\n readonly filter: ToolbarFilterPage;\n\n constructor(parent: GridPage | GalleryPage | FormPage | KanbanPage) {\n super(parent.rootPage);\n this.parent = parent;\n this.filter = new ToolbarFilterPage(this);\n }\n}\n")),(0,i.kt)("p",null,"We will create ",(0,i.kt)("inlineCode",{parentName:"p"},"ToolbarFilterPage")," page object, which will have all the methods related to filter."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"export class ToolbarFilterPage extends BasePage {\n readonly toolbar: ToolbarPage;\n\n constructor(toolbar: ToolbarPage) {\n super(toolbar.rootPage);\n this.toolbar = toolbar;\n }\n}\n")),(0,i.kt)("p",null,"Here ",(0,i.kt)("inlineCode",{parentName:"p"},"BasePage")," is an abstract class, which used to enforce structure for all page objects. Thus all page object ",(0,i.kt)("em",{parentName:"p"},"should")," inherit ",(0,i.kt)("inlineCode",{parentName:"p"},"BasePage"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Helper methods like ",(0,i.kt)("inlineCode",{parentName:"li"},"waitForResponse")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"getClipboardText")," (this can be access on any page object, with ",(0,i.kt)("inlineCode",{parentName:"li"},"this.waitForResponse"),")"),(0,i.kt)("li",{parentName:"ul"},"Provides structure for page objects, enforces all Page objects to have ",(0,i.kt)("inlineCode",{parentName:"li"},"rootPage")," property, which is the page object created in the test setup."),(0,i.kt)("li",{parentName:"ul"},"Enforces all pages to have a ",(0,i.kt)("inlineCode",{parentName:"li"},"get")," method which will return the locator of the main container of that page, hence we can have focused dom selection, i.e.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"// This will only select the button inside the container of the concerned page\nawait this.get().querySelector('button').count();\n")),(0,i.kt)("h3",{id:"writing-an-action-method"},"Writing an action method"),(0,i.kt)("p",null,"This a method which will reset/clear all the filters. Since this is an action method, it will also wait for the ",(0,i.kt)("inlineCode",{parentName:"p"},"delete")," filter API to return. Ignoring this API call will cause flakiness in the test, down the line."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"async resetFilter() {\n await this.waitForResponse({\n uiAction: () => this.get().locator('.nc-filter-item-remove-btn').click(),\n httpMethodsToMatch: ['DELETE'],\n requestUrlPathToMatch: '/api/v1/db/meta/filters/',\n });\n}\n")),(0,i.kt)("h3",{id:"writing-an-assertionverification-method"},"Writing an assertion/verification method"),(0,i.kt)("p",null,"Here we use ",(0,i.kt)("inlineCode",{parentName:"p"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"p"},"@playwright/test")," library, which has retry logic built in."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"import { expect } from '@playwright/test';\n\nasync verifyFilter({ title }: { title: string }) {\n await expect(\n this.get().locator(`[data-testid=\"nc-fields-menu-${title}\"]`).locator('input[type=\"checkbox\"]')\n ).toBeChecked();\n}\n")),(0,i.kt)("h2",{id:"tips-to-avoid-flakiness"},"Tips to avoid flakiness"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"If an UI action, causes an API call or the UI state change, then wait for that API call to complete or the UI state to change."),(0,i.kt)("li",{parentName:"ul"},"What to wait out can be situation specific, but in general, is best to wait for the final state to be reached, i.e. in the case of creating filter, while it seems like waiting for the filter API to complete is enough, but after its return the table rows are reloaded and the UI state changes, so its better to wait for the table rows to be reloaded.")),(0,i.kt)("h2",{id:"accessing-playwright-report-in-the-ci"},"Accessing playwright report in the CI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Open ",(0,i.kt)("inlineCode",{parentName:"li"},"Summary")," tab in the CI workflow in github actions."),(0,i.kt)("li",{parentName:"ul"},"Scroll down to ",(0,i.kt)("inlineCode",{parentName:"li"},"Artifacts")," section."),(0,i.kt)("li",{parentName:"ul"},"Access reports which suffixed with the db type and shard number(corresponding to the CI workerflow name). i.e ",(0,i.kt)("inlineCode",{parentName:"li"},"playwright-report-mysql-2")," is for ",(0,i.kt)("inlineCode",{parentName:"li"},"playwright-mysql-2")," workflow."),(0,i.kt)("li",{parentName:"ul"},"Download it and run ",(0,i.kt)("inlineCode",{parentName:"li"},"npm install -D @playwright/test && npx playwright show-report ./")," inside the downloaded folder.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5dcc9f57.d3132ef5.js b/packages/noco-docs/dist/assets/js/5dcc9f57.d3132ef5.js new file mode 100644 index 0000000000..92778a2fac --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5dcc9f57.d3132ef5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7395],{34861:e=>{e.exports=JSON.parse('{"label":"Table operations","permalink":"/tags/table-operations","allTagsPath":"/tags","count":8,"items":[{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","permalink":"/table-operations/filter"},{"id":"table-operations/group-by","title":"Grouping records","description":"Learn how to group records in NocoDB.","permalink":"/table-operations/group-by"},{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"},{"id":"table-operations/row-height","title":"Record height","description":"Learn how to adjust the height of records in NocoDB.","permalink":"/table-operations/row-height"},{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","permalink":"/table-operations/search"},{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","permalink":"/table-operations/sort"},{"id":"table-operations/overview","title":"Table operations overview","description":"Learn how to work with filters, sort, group by, and more in NocoDB.","permalink":"/table-operations/overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/5eaf3a75.f80b26bd.js b/packages/noco-docs/dist/assets/js/5eaf3a75.f80b26bd.js new file mode 100644 index 0000000000..9bde3eed74 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/5eaf3a75.f80b26bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1944],{3905:(e,t,a)=>{a.d(t,{Zo:()=>l,kt:()=>m});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function c(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var p=r.createContext({}),i=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):c(c({},t),e)),a},l=function(e){var t=i(e.components);return r.createElement(p.Provider,{value:t},e.children)},k="mdxType",w={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),k=i(a),u=o,m=k["".concat(p,".").concat(u)]||k[u]||w[u]||n;return a?r.createElement(m,c(c({ref:t},l),{},{components:a})):r.createElement(m,c({ref:t},l))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,c=new Array(n);c[0]=u;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s[k]="string"==typeof e?e:o,c[1]=s;for(var i=2;i{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>w,frontMatter:()=>n,metadata:()=>s,toc:()=>i});var r=a(87462),o=(a(67294),a(3905));const n={title:"Create workspace",description:"Learn how to create a workspace in NocoDB",tags:["Workspaces","Create"],keywords:["NocoDB workspace","create workspace","workspace context menu","workspace owner","workspace collaboration","workspace actions","default workspace"]},c=void 0,s={unversionedId:"workspaces/create-workspace",id:"workspaces/create-workspace",title:"Create workspace",description:"Learn how to create a workspace in NocoDB",source:"@site/docs/030.workspaces/020.create-workspace.md",sourceDirName:"030.workspaces",slug:"/workspaces/create-workspace",permalink:"/workspaces/create-workspace",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/030.workspaces/020.create-workspace.md",tags:[{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Create",permalink:"/tags/create"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create workspace",description:"Learn how to create a workspace in NocoDB",tags:["Workspaces","Create"],keywords:["NocoDB workspace","create workspace","workspace context menu","workspace owner","workspace collaboration","workspace actions","default workspace"]},sidebar:"tutorialSidebar",previous:{title:"Workspace overview",permalink:"/workspaces/workspace-overview"},next:{title:"Workspace collaboration",permalink:"/workspaces/workspace-collaboration"}},p={},i=[{value:"Create a workspace",id:"create-a-workspace",level:2},{value:"Related articles",id:"related-articles",level:2}],l={toc:i},k="wrapper";function w(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,r.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Upon signing up to NocoDB, an initial workspace is automatically generated on your behalf.\nThen you have the ability to either ",(0,o.kt)("a",{parentName:"p",href:"/workspaces/actions-on-workspace#rename-workspace"},"modify its name")," or creating an entirely new workspace."),(0,o.kt)("p",null,"In the following section, lets look at the process of creating your NocoDB workspaces."),(0,o.kt)("h2",{id:"create-a-workspace"},"Create a workspace"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Navigate to the top-left corner of the sidebar and select the ",(0,o.kt)("strong",{parentName:"li"},"Workspace name")," to access the ",(0,o.kt)("strong",{parentName:"li"},"Workspace context menu"),"."),(0,o.kt)("li",{parentName:"ol"},"From the Workspace context menu, opt for the ",(0,o.kt)("strong",{parentName:"li"},"Create workspace")," button."),(0,o.kt)("li",{parentName:"ol"},"Provide a name for the workspace "),(0,o.kt)("li",{parentName:"ol"},"Proceed by clicking the ",(0,o.kt)("strong",{parentName:"li"},"Create Workspace")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:a(16489).Z,width:"2878",height:"1018"})," "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:a(71526).Z,width:"2874",height:"1206"})," "),(0,o.kt)("p",null,"When you start a new workspace, you automatically become the owner.\nOnce your workspace is set up, you can ",(0,o.kt)("a",{parentName:"p",href:"/tables/create-table"},"create tables")," and ",(0,o.kt)("a",{parentName:"p",href:"/workspaces/workspace-collaboration"},"invite others")," to join and work together.\nYou can invite as many people as you want, and you can create as many tables as you need in your workspace.\nBut remember, there can only be one owner, and only the owner can delete the workspace. "),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The Open Source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces.")),(0,o.kt)("h2",{id:"related-articles"},"Related articles"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/workspace-overview"},"Workspace overview")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/workspace-collaboration"},"Invite team members to workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#rename-workspace"},"Rename workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#delete-workspace"},"Delete workspace"))))}w.isMDXComponent=!0},71526:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/workspace-create-2-b59c529fcc276d4b27996c2600b82420.png"},16489:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/workspace-create-1847b5a89de49a838a9ca1808e3ad934.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/603e048e.2cc120ec.js b/packages/noco-docs/dist/assets/js/603e048e.2cc120ec.js new file mode 100644 index 0000000000..13bc1c4d11 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/603e048e.2cc120ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7700],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>f});var i=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function r(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var o=i.createContext({}),p=function(e){var t=i.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},d=function(e){var t=p(e.components);return i.createElement(o.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},y=i.forwardRef((function(e,t){var a=e.components,l=e.mdxType,n=e.originalType,o=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=p(a),y=l,f=u["".concat(o,".").concat(y)]||u[y]||c[y]||n;return a?i.createElement(f,r(r({ref:t},d),{},{components:a})):i.createElement(f,r({ref:t},d))}));function f(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var n=a.length,r=new Array(n);r[0]=y;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[u]="string"==typeof e?e:l,r[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>c,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var i=a(87462),l=(a(67294),a(3905));const n={title:"Display value",description:"This article explains how to set display value for a table & its use.",tags:["Fields","Display Value"],keywords:["display value","display value in nocoDB","display value in nocoDB"]},r="Display Value",s={unversionedId:"fields/display-value",id:"fields/display-value",title:"Display value",description:"This article explains how to set display value for a table & its use.",source:"@site/docs/070.fields/030.display-value.md",sourceDirName:"070.fields",slug:"/fields/display-value",permalink:"/fields/display-value",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/030.display-value.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Display Value",permalink:"/tags/display-value"}],version:"current",sidebarPosition:30,frontMatter:{title:"Display value",description:"This article explains how to set display value for a table & its use.",tags:["Fields","Display Value"],keywords:["display value","display value in nocoDB","display value in nocoDB"]},sidebar:"tutorialSidebar",previous:{title:"Primary key",permalink:"/fields/primary-key"},next:{title:"Single line text",permalink:"/fields/field-types/text-based/single-line-text"}},o={},p=[{value:"Use of Display Value",id:"use-of-display-value",level:2},{value:"Set Display Value",id:"set-display-value",level:2}],d={toc:p},u="wrapper";function c(e){let{components:t,...n}=e;return(0,l.kt)(u,(0,i.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h1",{id:"display-value"},"Display Value"),(0,l.kt)("p",null,"The ",(0,l.kt)("inlineCode",{parentName:"p"},"Display Value"),", as its name suggests, serves as the primary or main value within a record of a table, and it is typically the attribute by which we identify or associate that specific record. While it is advisable for the display value to be linked to a field with unique identifiers, such as a primary key, it's important to note that this uniqueness is not always enforced at the database level."),(0,l.kt)("h2",{id:"use-of-display-value"},"Use of Display Value"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Within a spreadsheet, ",(0,l.kt)("inlineCode",{parentName:"li"},"Display Value")," are always highlighted so that it is easier to recognise what record we are working with."),(0,l.kt)("li",{parentName:"ul"},"And when ",(0,l.kt)("inlineCode",{parentName:"li"},"Links")," are created between two tables - it is the Display Value that appears in ",(0,l.kt)("inlineCode",{parentName:"li"},"Linked records")," modal.")),(0,l.kt)("p",null,"Example:\nDisplay Value highlighted in Actor table\n",(0,l.kt)("img",{alt:"display value",src:a(92350).Z,width:"2880",height:"1800"})),(0,l.kt)("p",null,"Display Value associated when Links field",(0,l.kt)("br",{parentName:"p"}),"\n","The value shown in ",(0,l.kt)("inlineCode",{parentName:"p"},"Link Records")," modal when adding a new link is associated records ",(0,l.kt)("inlineCode",{parentName:"p"},"Display value")," "),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"display value- links field",src:a(66082).Z,width:"2878",height:"1800"})),(0,l.kt)("h2",{id:"set-display-value"},"Set Display Value"),(0,l.kt)("p",null,"Click dropdown icon (\ud83d\udd3d) in the target field. Click ",(0,l.kt)("inlineCode",{parentName:"p"},"Set as Display Value"),". "),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"display value set",src:a(25038).Z,width:"2880",height:"1800"})),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"How is Display Value identified for existing database tables ?"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"It is usually the first field after the primary key which is not a number."),(0,l.kt)("li",{parentName:"ul"},"If there is no field which is not a number then the field adjacent to primary key is chosen.")),(0,l.kt)("p",{parentName:"admonition"},"Can I change the Display Value to another field within tables ?"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"Yes, you can use the same way mentioned above to set Display Value."))))}c.isMDXComponent=!0},66082:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/display-value-in-linked-record-a2d5ae449c2be23c1b31d60beb97d063.png"},92350:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/display-value-90a8f4b70e88e428acbff6e49a339325.png"},25038:(e,t,a)=>{a.d(t,{Z:()=>i});const i=a.p+"assets/images/set-as-display-value-dcd56ac34c7d3e79a72b2abcab08f1f8.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/60b8b995.008d5a3e.js b/packages/noco-docs/dist/assets/js/60b8b995.008d5a3e.js new file mode 100644 index 0000000000..857738b24a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/60b8b995.008d5a3e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3463],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var d=r.createContext({}),s=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},p=function(e){var t=s(e.components);return r.createElement(d.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,d=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=s(a),f=i,c=m["".concat(d,".").concat(f)]||m[f]||u[f]||n;return a?r.createElement(c,l(l({ref:t},p),{},{components:a})):r.createElement(c,l({ref:t},p))}));function c(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,l=new Array(n);l[0]=f;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[m]="string"==typeof e?e:i,l[1]=o;for(var s=2;s{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>n,metadata:()=>o,toc:()=>s});var r=a(87462),i=(a(67294),a(3905));const n={title:"Duration",description:"This article explains how to create & work with a Duration field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create duration field"]},l=void 0,o={unversionedId:"fields/field-types/date-time-based/duration",id:"fields/field-types/date-time-based/duration",title:"Duration",description:"This article explains how to create & work with a Duration field.",source:"@site/docs/070.fields/040.field-types/070.date-time-based/040.duration.md",sourceDirName:"070.fields/040.field-types/070.date-time-based",slug:"/fields/field-types/date-time-based/duration",permalink:"/fields/field-types/date-time-based/duration",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/070.date-time-based/040.duration.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Date & Time",permalink:"/tags/date-time"}],version:"current",sidebarPosition:40,frontMatter:{title:"Duration",description:"This article explains how to create & work with a Duration field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create duration field"]},sidebar:"tutorialSidebar",previous:{title:"Time",permalink:"/fields/field-types/date-time-based/time"},next:{title:"Multi-field editor",permalink:"/fields/multi-fields-editor"}},d={},s=[{value:"Create a duration field",id:"create-a-duration-field",level:2},{value:"Supported duration formats",id:"supported-duration-formats",level:3},{value:"Related fields",id:"related-fields",level:2}],p={toc:s},m="wrapper";function u(e){let{components:t,...n}=e;return(0,i.kt)(m,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Duration")," field type is used to store duration of time in seconds or minutes. Different formats are supported by NocoDB, as detailed in the table below."),(0,i.kt)("h2",{id:"create-a-duration-field"},"Create a duration field"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,i.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,i.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Select the field type as ",(0,i.kt)("inlineCode",{parentName:"li"},"Duration")," from the dropdown."),(0,i.kt)("li",{parentName:"ol"},"Configure ",(0,i.kt)("inlineCode",{parentName:"li"},"Duration Format")),(0,i.kt)("li",{parentName:"ol"},"Configure default value (Optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(30576).Z,width:"2878",height:"1304"})),(0,i.kt)("h3",{id:"supported-duration-formats"},"Supported duration formats"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Format"),(0,i.kt)("th",{parentName:"tr",align:null},"Example"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"HH:mm"),(0,i.kt)("td",{parentName:"tr",align:null},"14:20")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"HH:mm:ss"),(0,i.kt)("td",{parentName:"tr",align:null},"12:45:30")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"HH:mm:ss.s"),(0,i.kt)("td",{parentName:"tr",align:null},"12:45:30.5")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"HH:mm.ss.ss"),(0,i.kt)("td",{parentName:"tr",align:null},"12:45.30.50")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"HH:mm.ss.sss"),(0,i.kt)("td",{parentName:"tr",align:null},"12:45.30.500")))),(0,i.kt)("h2",{id:"related-fields"},"Related fields"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date-time"},"DateTime")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date"},"Date")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/time"},"Time"))))}u.isMDXComponent=!0},30576:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/duration-240ca3f3201ea99e948bebd59e41dce8.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/615746d5.b0727925.js b/packages/noco-docs/dist/assets/js/615746d5.b0727925.js new file mode 100644 index 0000000000..a1ac23ffc2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/615746d5.b0727925.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[678],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},v=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=s(n),v=a,m=c["".concat(p,".").concat(v)]||c[v]||d[v]||i;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=v;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var s=2;s{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var r=n(87462),a=(n(67294),n(3905));const i={title:"Code Snippets",description:"Code Snippets Examples in different ways"},o=void 0,l={unversionedId:"setup-and-usages/code-snippets",id:"version-0.109.7/setup-and-usages/code-snippets",title:"Code Snippets",description:"Code Snippets Examples in different ways",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/050.code-snippets.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/code-snippets",permalink:"/0.109.7/setup-and-usages/code-snippets",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/050.code-snippets.md",tags:[],version:"0.109.7",sidebarPosition:50,frontMatter:{title:"Code Snippets",description:"Code Snippets Examples in different ways"},sidebar:"tutorialSidebar",previous:{title:"Column Types",permalink:"/0.109.7/setup-and-usages/column-types"},next:{title:"Link To Another Record",permalink:"/0.109.7/setup-and-usages/link-to-another-record"}},p={},s=[{value:"Overview",id:"overview",level:2},{value:"Supported Snippet",id:"supported-snippet",level:2},{value:"Shell",id:"shell",level:3},{value:"Javascript",id:"javascript",level:3},{value:"Node",id:"node",level:3},{value:"NocoDB SDK",id:"nocodb-sdk",level:3},{value:"PHP",id:"php",level:3},{value:"Python",id:"python",level:3},{value:"Ruby",id:"ruby",level:3},{value:"Java",id:"java",level:3},{value:"C",id:"c",level:3}],u={toc:s},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"overview"},"Overview"),(0,a.kt)("p",null,"In the table toolbar, click Table name button and click ",(0,a.kt)("inlineCode",{parentName:"p"},"Get API Snippet"),"."),(0,a.kt)("img",{width:"476",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194796042-e80ee8dd-a26f-4b75-a7ff-7cfdab1dcc43.png"}),(0,a.kt)("p",null,"A modal box will be shown with sample code snippet for List API."),(0,a.kt)("img",{width:"1499",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194796072-b521e3eb-4f25-42d9-bdfe-ef2dd22a1efa.png"}),(0,a.kt)("h2",{id:"supported-snippet"},"Supported Snippet"),(0,a.kt)("h3",{id:"shell"},"Shell"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"cURL"),(0,a.kt)("li",{parentName:"ul"},"wget")),(0,a.kt)("h3",{id:"javascript"},"Javascript"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Axios"),(0,a.kt)("li",{parentName:"ul"},"Fetch"),(0,a.kt)("li",{parentName:"ul"},"jQuery"),(0,a.kt)("li",{parentName:"ul"},"XHR")),(0,a.kt)("h3",{id:"node"},"Node"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Axios"),(0,a.kt)("li",{parentName:"ul"},"Fetch"),(0,a.kt)("li",{parentName:"ul"},"Request"),(0,a.kt)("li",{parentName:"ul"},"Native"),(0,a.kt)("li",{parentName:"ul"},"Unirest")),(0,a.kt)("h3",{id:"nocodb-sdk"},"NocoDB SDK"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Javascript"),(0,a.kt)("li",{parentName:"ul"},"Node")),(0,a.kt)("h3",{id:"php"},"PHP"),(0,a.kt)("h3",{id:"python"},"Python"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"http.client"),(0,a.kt)("li",{parentName:"ul"},"request")),(0,a.kt)("h3",{id:"ruby"},"Ruby"),(0,a.kt)("h3",{id:"java"},"Java"),(0,a.kt)("h3",{id:"c"},"C"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/61a3d417.e845dc89.js b/packages/noco-docs/dist/assets/js/61a3d417.e845dc89.js new file mode 100644 index 0000000000..8485d4067a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/61a3d417.e845dc89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6591],{3905:(e,t,r)=>{r.d(t,{Zo:()=>w,kt:()=>m});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},w=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",v={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,c=e.parentName,w=l(e,["components","mdxType","originalType","parentName"]),p=s(r),d=i,m=p["".concat(c,".").concat(d)]||p[d]||v[d]||a;return r?n.createElement(m,o(o({ref:t},w),{},{components:r})):n.createElement(m,o({ref:t},w))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:i,o[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>v,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=r(87462),i=(r(67294),r(3905));const a={title:"Create view",description:"Learn how to create a new view in NocoDB.",tags:["Views","Create","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","create view"]},o=void 0,l={unversionedId:"views/create-view",id:"views/create-view",title:"Create view",description:"Learn how to create a new view in NocoDB.",source:"@site/docs/090.views/020.create-view.md",sourceDirName:"090.views",slug:"/views/create-view",permalink:"/views/create-view",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/020.create-view.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Create",permalink:"/tags/create"},{label:"Grid view",permalink:"/tags/grid-view"},{label:"Form view",permalink:"/tags/form-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Gallery view",permalink:"/tags/gallery-view"}],version:"current",sidebarPosition:20,frontMatter:{title:"Create view",description:"Learn how to create a new view in NocoDB.",tags:["Views","Create","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","create view"]},sidebar:"tutorialSidebar",previous:{title:"View overview",permalink:"/views/views-overview"},next:{title:"Share view",permalink:"/views/share-view"}},c={},s=[{value:"Create new view",id:"create-new-view",level:2},{value:"Related articles",id:"related-articles",level:3}],w={toc:s},p="wrapper";function v(e){let{components:t,...a}=e;return(0,i.kt)(p,(0,n.Z)({},w,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"create-new-view"},"Create new view"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"+")," on the left sidebar next to ",(0,i.kt)("inlineCode",{parentName:"li"},"table name")," OR click on ",(0,i.kt)("inlineCode",{parentName:"li"},"+ New View")," button below ",(0,i.kt)("inlineCode",{parentName:"li"},"table name"),"."),(0,i.kt)("li",{parentName:"ol"},"Select view type from the dropdown modal."),(0,i.kt)("li",{parentName:"ol"},"Fill view name in the pop-up modal.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"For Kanban view, select the ",(0,i.kt)("inlineCode",{parentName:"li"},"Single select")," field to be used as the Kanban field."))),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Create View")," button.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:r(51391).Z,width:"2876",height:"860"}),"\n",(0,i.kt)("img",{alt:"image",src:r(14504).Z,width:"2878",height:"1412"})),(0,i.kt)("h3",{id:"related-articles"},"Related articles"))}v.isMDXComponent=!0},51391:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/create-view-1-336b23c8d721344a1924560932a8ca6f.png"},14504:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/create-view-2-b1e2ae57004dc07a6bf2fc3e9121f7f9.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/61af7884.3fcf73eb.js b/packages/noco-docs/dist/assets/js/61af7884.3fcf73eb.js new file mode 100644 index 0000000000..0293755c4b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/61af7884.3fcf73eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7621],{51261:e=>{e.exports=JSON.parse('{"label":"Form view","permalink":"/tags/form-view","allTagsPath":"/tags","count":5,"items":[{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"views/view-types/form","title":"Form","description":"Learn how to create, import, and manage forms in NocoDB.","permalink":"/views/view-types/form"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6233b6dc.7caaef91.js b/packages/noco-docs/dist/assets/js/6233b6dc.7caaef91.js new file mode 100644 index 0000000000..b88a412465 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6233b6dc.7caaef91.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7647],{10950:t=>{t.exports=JSON.parse('{"label":"Excel","permalink":"/tags/excel","allTagsPath":"/tags","count":3,"items":[{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","permalink":"/tables/create-table-via-import"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","permalink":"/tables/import-data-into-existing-table"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6485a1bf.4bdbdd94.js b/packages/noco-docs/dist/assets/js/6485a1bf.4bdbdd94.js new file mode 100644 index 0000000000..f4aad7147c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6485a1bf.4bdbdd94.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6640],{81067:e=>{e.exports=JSON.parse('{"label":"Multi select","permalink":"/tags/multi-select","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/select-based/multi-select","title":"Multi Select","description":"This article explains how to create & work with a Multi select field.","permalink":"/fields/field-types/select-based/multi-select"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6502d10a.62d3ac16.js b/packages/noco-docs/dist/assets/js/6502d10a.62d3ac16.js new file mode 100644 index 0000000000..860afbe9e8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6502d10a.62d3ac16.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6078],{92793:e=>{e.exports=JSON.parse('{"label":"Long text","permalink":"/tags/long-text","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/text-based/long-text","title":"Long text","description":"This article explains how to create & work with a Long text field.","permalink":"/fields/field-types/text-based/long-text"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/654123f4.09f2f089.js b/packages/noco-docs/dist/assets/js/654123f4.09f2f089.js new file mode 100644 index 0000000000..2779f5f439 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/654123f4.09f2f089.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9933],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>u});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=r.createContext({}),d=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(a),y=i,u=c["".concat(s,".").concat(y)]||c[y]||m[y]||n;return a?r.createElement(u,o(o({ref:t},p),{},{components:a})):r.createElement(u,o({ref:t},p))}));function u(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,o=new Array(n);o[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>n,metadata:()=>l,toc:()=>d});var r=a(87462),i=(a(67294),a(3905));const n={title:"Primary Key",description:"Understanding Primary Key in NocoDB!"},o=void 0,l={unversionedId:"setup-and-usages/primary-key",id:"version-0.109.7/setup-and-usages/primary-key",title:"Primary Key",description:"Understanding Primary Key in NocoDB!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/100.primary-key.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/primary-key",permalink:"/0.109.7/setup-and-usages/primary-key",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/100.primary-key.md",tags:[],version:"0.109.7",sidebarPosition:100,frontMatter:{title:"Primary Key",description:"Understanding Primary Key in NocoDB!"},sidebar:"tutorialSidebar",previous:{title:"Formulas",permalink:"/0.109.7/setup-and-usages/formulas"},next:{title:"Display Value",permalink:"/0.109.7/setup-and-usages/display-value"}},s={},d=[{value:"What is a Primary Key ?",id:"what-is-a-primary-key-",level:2},{value:"What is the use of Primary Key ?",id:"what-is-the-use-of-primary-key-",level:2},{value:"Primary Key in NocoDB",id:"primary-key-in-nocodb",level:2},{value:"What if Primary Key was missing?",id:"what-if-primary-key-was-missing",level:2},{value:"Example : Primary Key & optional system fields during new table creation",id:"example--primary-key--optional-system-fields-during-new-table-creation",level:4},{value:"Example : Show System Fields",id:"example--show-system-fields",level:4},{value:"Can I change the Primary Key to another column within tables ?",id:"can-i-change-the-primary-key-to-another-column-within-tables-",level:2}],p={toc:d},c="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(c,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"what-is-a-primary-key-"},"What is a Primary Key ?"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"A primary key is a special database table column designated to uniquely identify each table record.")),(0,i.kt)("h2",{id:"what-is-the-use-of-primary-key-"},"What is the use of Primary Key ?"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"As it uniquely identifies an individual record of a table, it is used internally by NocoDB for all operations associated with a record")),(0,i.kt)("h2",{id:"primary-key-in-nocodb"},"Primary Key in NocoDB"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Primary Key that gets defined / used in NocoDB depends on how underlying table was created. Summary is captured below")),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"From UI, Create new table / Import from Excel / Import from CSV",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"An ",(0,i.kt)("inlineCode",{parentName:"li"},"ID")," ","[datatype: Integer]"," system field created by default during table creation is used as primary key"),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are inserted by default & can be omitted optionally; these fields can be deleted after table creation"))),(0,i.kt)("li",{parentName:"ol"},"Connect to existing external database",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"Existing ",(0,i.kt)("inlineCode",{parentName:"li"},"primary key")," field defined for a table is retained as is; NocoDB doesn't insert a new ID field"),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are not inserted by default"))),(0,i.kt)("li",{parentName:"ol"},"Import from Airtable",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"Airtable record ID is marked as primary key for imported records, and is mapped to field ",(0,i.kt)("inlineCode",{parentName:"li"},"ncRecordId")," ","[datatype: varchar]"),(0,i.kt)("li",{parentName:"ol"},"If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB"),(0,i.kt)("li",{parentName:"ol"},"Computed hash value for the entire record is stored in system field ",(0,i.kt)("inlineCode",{parentName:"li"},"ncRecordHash")),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are not inserted by default"))),(0,i.kt)("li",{parentName:"ol"},"Create new table using SDK / API",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute ",(0,i.kt)("inlineCode",{parentName:"li"},"pk: true"),")")))),(0,i.kt)("h2",{id:"what-if-primary-key-was-missing"},"What if Primary Key was missing?"),(0,i.kt)("p",null,"It is possible to have a table without any primary key. "),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"External database table can be created without primary key configuration."),(0,i.kt)("li",{parentName:"ul"},"New table can be created using SDK / API without primary key\nIn such scenario's, new records can be created in NocoDB for this table, but records can't be updated or deleted ","[as there is now way for NocoDB to uniquely identify these records]")),(0,i.kt)("h4",{id:"example--primary-key--optional-system-fields-during-new-table-creation"},"Example : Primary Key & optional system fields during new table creation"),(0,i.kt)("img",{width:"596",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189113679-481bceab-8957-4c5d-a38c-9940f03cfd7e.png"}),(0,i.kt)("h4",{id:"example--show-system-fields"},"Example : Show System Fields"),(0,i.kt)("img",{width:"309",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189113907-871f7ab0-9bb2-4f04-a726-2d9feb56892e.png"}),(0,i.kt)("h2",{id:"can-i-change-the-primary-key-to-another-column-within-tables-"},"Can I change the Primary Key to another column within tables ?"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"You can't update Primary Key from NocoDB UI. You can reconfigure it at database level directly & trigger ",(0,i.kt)("inlineCode",{parentName:"li"},"meta sync")," explicitly.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6758.0b60db9c.js b/packages/noco-docs/dist/assets/js/6758.0b60db9c.js new file mode 100644 index 0000000000..e68979aec6 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6758.0b60db9c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6758],{66758:(e,t,r)=>{r.r(t),r.d(t,{DocSearchModal:()=>Ft});var n=r(87462);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function c(e){var t=function(e,t){if("object"!==o(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===o(t)?t:String(t)}function a(e,t,r){return(t=c(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i=r(86854),l=r(45987);function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function f(e,t,r){var n,o=t.initialState;return{getState:function(){return o},dispatch:function(n,c){var a=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(y++),plugins:o,initialState:I({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(E(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:g,onResolve:g};Object.keys(t).forEach((function(e){t[e].__default=!0}));var n=O(O({},t),e);return Promise.resolve(n)})))}))}(e,r)}))).then((function(e){return p(e)})).then((function(e){return e.map((function(e){return I(I({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))},onResolve:function(r){e.onResolve(r),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:I({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var X,ee,te,re=null,ne=(X=-1,ee=-1,te=void 0,function(e){var t=++X;return Promise.resolve(e).then((function(e){return te&&t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var se=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var fe=["props","refresh","store"],pe=["inputElement","formElement","panelElement"],me=["inputElement"],ve=["inputElement","maxLength"],de=["sourceIndex"],he=["sourceIndex"],ye=["item","source","sourceIndex"];function ge(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function be(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Ee(e){var t=e.props,r=e.refresh,n=e.store,o=Se(e,fe),c=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,c=e.panelElement;function a(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,c].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return be({onTouchStart:a,onMouseDown:a,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},Se(e,pe))},getRootProps:function(e){return be({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return be({action:"",noValidate:!0,role:"search",onSubmit:function(c){var a;c.preventDefault(),t.onSubmit(be({event:c,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(a=e.inputElement)||void 0===a||a.blur()},onReset:function(c){var a;c.preventDefault(),t.onReset(be({event:c,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(a=e.inputElement)||void 0===a||a.focus()}},Se(e,me))},getLabelProps:function(e){var r=e||{},n=r.sourceIndex,o=Se(r,de);return be({htmlFor:"".concat(c(t.id,n),"-input"),id:"".concat(c(t.id,n),"-label")},o)},getInputProps:function(e){var c;function a(e){(t.openOnFocus||Boolean(n.getState().query))&&oe(be({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var i=e||{},l=(i.inputElement,i.maxLength),u=void 0===l?512:l,s=Se(i,ve),f=Q(n.getState()),p=function(e){return Boolean(e&&e.match(se))}((null===(c=t.environment.navigator)||void 0===c?void 0:c.userAgent)||""),m=null!=f&&f.itemUrl&&!p?"go":"search";return be({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:m,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){oe(be({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,c=ue(e,ce);if("ArrowUp"===t.key||"ArrowDown"===t.key){var a=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},i=function(){var e=Q(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,a=e.itemInputValue,i=e.itemUrl,l=e.source;l.onActive(ie({event:t,item:r,itemInputValue:a,itemUrl:i,refresh:n,source:l,state:o.getState()},c))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?oe(ie({event:t,props:r,query:o.getState().query,refresh:n,store:o},c)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),i(),setTimeout(a,0)})):(o.dispatch(t.key,{}),i(),a())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=Q(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,p=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(ie({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:p,state:o.getState()},c)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(ie({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:p,state:o.getState()},c)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(ie({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:p,state:o.getState()},c)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});oe(ie({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},c)).then((function(){p.onSelect(ie({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:p,state:o.getState()},c))}))}}}(be({event:e,props:t,refresh:r,store:n},o))},onFocus:a,onBlur:g,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||a(r)}},s)},getPanelProps:function(e){return be({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){var r=e||{},n=r.sourceIndex,o=Se(r,he);return be({role:"listbox","aria-labelledby":"".concat(c(t.id,n),"-label"),id:"".concat(c(t.id,n),"-list")},o)},getItemProps:function(e){var a=e.item,i=e.source,l=e.sourceIndex,u=Se(e,ye);return be({id:"".concat(c(t.id,l),"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=Q(n.getState());if(null!==n.getState().activeItemId&&t){var c=t.item,i=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(be({event:e,item:c,itemInputValue:i,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var c=i.getItemInputValue({item:a,state:n.getState()}),l=i.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():oe(be({event:e,nextState:{isOpen:!1},props:t,query:c,refresh:r,store:n},o))).then((function(){i.onSelect(be({event:e,item:a,itemInputValue:c,itemUrl:l,refresh:r,source:i,state:n.getState()},o))}))}},u)}}}var je=[{segment:"autocomplete-core",version:"1.8.2"}];function we(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ie(e){for(var t=1;t=r?null===n?null:0:o}function Ce(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Re(e){for(var t=1;t0&&He.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},He.createElement("p",{className:"DocSearch-Help"},i,":"),He.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(Je(e),[He.createElement("li",{key:t},He.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&He.createElement("p",{className:"DocSearch-Help"},"".concat(s," "),He.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},p)))}var Ge=function(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Xe(e){switch(e.type){case"lvl1":return He.createElement(Ge,null);case"content":return He.createElement(tt,null);default:return He.createElement(et,null)}}function et(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function tt(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function rt(){return He.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},He.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),He.createElement("path",{d:"M8 17l-6-6 6-6"})))}var nt=["hit","attribute","tagName"];function ot(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ct(e){for(var t=1;t|<\/mark>)/g,st=RegExp(ut.source);function ft(e){var t,r,n,o=e;if(!o.__docsearch_parent&&!e._highlightResult)return e["hierarchy.lvl0"];var c=((o.__docsearch_parent?null===(t=o.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r?void 0:r["hierarchy.lvl0"]:null===(n=e._highlightResult)||void 0===n?void 0:n["hierarchy.lvl0"])||{}).value;return c&&st.test(c)?c.replace(ut,""):c}function pt(e){return He.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var r=ft(t.items[0]);return He.createElement(it,(0,n.Z)({},e,{key:t.source.sourceId,title:r,collection:t,renderIcon:function(e){var r,n=e.item,o=e.index;return He.createElement(He.Fragment,null,n.__docsearch_parent&&He.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},He.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},n.__docsearch_parent!==(null===(r=t.items[o+1])||void 0===r?void 0:r.__docsearch_parent)?He.createElement("path",{d:"M8 6v21M20 27H8.3"}):He.createElement("path",{d:"M8 6v42M20 27H8.3"}))),He.createElement("div",{className:"DocSearch-Hit-icon"},He.createElement(Xe,{type:n.type})))},renderAction:function(){return He.createElement("div",{className:"DocSearch-Hit-action"},He.createElement(rt,null))}}))})),e.resultsFooterComponent&&He.createElement("section",{className:"DocSearch-HitsFooter"},He.createElement(e.resultsFooterComponent,{state:e.state})))}function mt(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},He.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),He.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function vt(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function dt(){return He.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},He.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var ht=["translations"];function yt(e){var t=e.translations,r=void 0===t?{}:t,o=(0,l.Z)(e,ht),c=r.recentSearchesTitle,a=void 0===c?"Recent":c,i=r.noRecentSearchesText,u=void 0===i?"No recent searches":i,s=r.saveRecentSearchButtonTitle,f=void 0===s?"Save this search":s,p=r.removeRecentSearchButtonTitle,m=void 0===p?"Remove this search from history":p,v=r.favoriteSearchesTitle,d=void 0===v?"Favorite":v,h=r.removeFavoriteSearchButtonTitle,y=void 0===h?"Remove this search from favorites":h;return"idle"===o.state.status&&!1===o.hasCollections?o.disableUserPersonalization?null:He.createElement("div",{className:"DocSearch-StartScreen"},He.createElement("p",{className:"DocSearch-Help"},u)):!1===o.hasCollections?null:He.createElement("div",{className:"DocSearch-Dropdown-Container"},He.createElement(it,(0,n.Z)({},o,{title:a,collection:o.state.collections[0],renderIcon:function(){return He.createElement("div",{className:"DocSearch-Hit-icon"},He.createElement(mt,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,n=e.runDeleteTransition;return He.createElement(He.Fragment,null,He.createElement("div",{className:"DocSearch-Hit-action"},He.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){o.favoriteSearches.add(t),o.recentSearches.remove(t),o.refresh()}))}},He.createElement(vt,null))),He.createElement("div",{className:"DocSearch-Hit-action"},He.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){o.recentSearches.remove(t),o.refresh()}))}},He.createElement(dt,null))))}})),He.createElement(it,(0,n.Z)({},o,{title:d,collection:o.state.collections[1],renderIcon:function(){return He.createElement("div",{className:"DocSearch-Hit-icon"},He.createElement(vt,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return He.createElement("div",{className:"DocSearch-Hit-action"},He.createElement("button",{className:"DocSearch-Hit-action-button",title:y,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){o.favoriteSearches.remove(t),o.refresh()}))}},He.createElement(dt,null)))}})))}var gt=["translations"],bt=He.memo((function(e){var t=e.translations,r=void 0===t?{}:t,o=(0,l.Z)(e,gt);if("error"===o.state.status)return He.createElement(Ke,{translations:null==r?void 0:r.errorScreen});var c=o.state.collections.some((function(e){return e.items.length>0}));return o.state.query?!1===c?He.createElement($e,(0,n.Z)({},o,{translations:null==r?void 0:r.noResultsScreen})):He.createElement(pt,o):He.createElement(yt,(0,n.Z)({},o,{hasCollections:c,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function Ot(){return He.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},He.createElement("g",{fill:"none",fillRule:"evenodd"},He.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},He.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),He.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},He.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var St=r(36963),Et=["translations"];function jt(e){var t=e.translations,r=void 0===t?{}:t,o=(0,l.Z)(e,Et),c=r.resetButtonTitle,a=void 0===c?"Clear the query":c,i=r.resetButtonAriaLabel,u=void 0===i?"Clear the query":i,s=r.cancelButtonText,f=void 0===s?"Cancel":s,p=r.cancelButtonAriaLabel,m=void 0===p?"Cancel":p,v=o.getFormProps({inputElement:o.inputRef.current}).onReset;return He.useEffect((function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()}),[o.autoFocus,o.inputRef]),He.useEffect((function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()}),[o.isFromSelection,o.inputRef]),He.createElement(He.Fragment,null,He.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:v},He.createElement("label",(0,n.Z)({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),He.createElement(St.W,null)),He.createElement("div",{className:"DocSearch-LoadingIndicator"},He.createElement(Ot,null)),He.createElement("input",(0,n.Z)({className:"DocSearch-Input",ref:o.inputRef},o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:Me}))),He.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":u,hidden:!o.state.query},He.createElement(dt,null))),He.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":m,onClick:o.onClose},f))}var wt=["_highlightResult","_snippetResult"];function It(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function Pt(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=It(t),c=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,(0,l.Z)(t,wt)),a=c.findIndex((function(e){return e.objectID===r.objectID}));a>-1&&c.splice(a,1),c.unshift(r),c=c.slice(0,n),o.setItem(c)},remove:function(e){c=c.filter((function(t){return t.objectID!==e.objectID})),o.setItem(c)},getAll:function(){return c}}}function Dt(e,t,r,n,o,c,a){try{var i=e[c](a),l=i.value}catch(u){return void r(u)}i.done?t(l):Promise.resolve(l).then(n,o)}var _t=r(64687),kt=r.n(_t),Ct=r(18871),Rt=r(42559);function xt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function At(e){for(var t=1;t",highlightPostTag:""})},{geoLocationField:""}),e.abrupt("return",{results:[a.adapt()]});case 6:case"end":return e.stop()}}),e)})),n=function(){var e=this,t=arguments;return new Promise((function(n,o){var c=r.apply(e,t);function a(e){Dt(c,n,o,a,i,"next",e)}function i(e){Dt(c,n,o,a,i,"throw",e)}a(void 0)}))},function(e){return n.apply(this,arguments)})};return t(c)}),[t,e])}function Lt(){}function Tt(e){return e}function qt(e,t){return e.reduce((function(e,r){var n=t(r);return e.hasOwnProperty(n)||(e[n]=[]),e[n].length<5&&e[n].push(r),e}),{})}var Ht=["footer","searchBox"];function Mt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Bt(e){for(var t=1;t0&&(G(),F.current&&F.current.focus())}),[V,G]),He.useEffect((function(){function e(){if(H.current){var e=.01*window.innerHeight;H.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),He.createElement("div",(0,n.Z)({ref:q},$({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===N.status&&"DocSearch-Container--Stalled","error"===N.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&s()}}),He.createElement("div",{className:"DocSearch-Modal",ref:H},He.createElement("header",{className:"DocSearch-SearchBar",ref:M},He.createElement(jt,(0,n.Z)({},W,{state:N,autoFocus:0===V.length,inputRef:F,isFromSelection:Boolean(V)&&V===z,translations:C,onClose:s}))),He.createElement("div",{className:"DocSearch-Dropdown",ref:B},He.createElement(bt,(0,n.Z)({},W,{indexName:T,state:N,hitComponent:v,resultsFooterComponent:h,disableUserPersonalization:j,recentSearches:Q,favoriteSearches:Z,inputRef:F,translations:R,getMissingResultsUrl:_,onItemClick:function(e){J(e),s()}}))),He.createElement("footer",{className:"DocSearch-Footer"},He.createElement(Ue,{translations:k}))))}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/68fa8000.51aeb8ad.js b/packages/noco-docs/dist/assets/js/68fa8000.51aeb8ad.js new file mode 100644 index 0000000000..fdb92ada26 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/68fa8000.51aeb8ad.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7549],{3905:(e,t,i)=>{i.d(t,{Zo:()=>s,kt:()=>u});var r=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function p(e){for(var t=1;t=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var a=r.createContext({}),l=function(e){var t=r.useContext(a),i=t;return e&&(i="function"==typeof e?e(t):p(p({},t),e)),i},s=function(e){var t=l(e.components);return r.createElement(a.Provider,{value:t},e.children)},d="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,a=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=l(i),y=n,u=d["".concat(a,".").concat(y)]||d[y]||f[y]||o;return i?r.createElement(u,p(p({ref:t},s),{},{components:i})):r.createElement(u,p({ref:t},s))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=i.length,p=new Array(o);p[0]=y;var c={};for(var a in t)hasOwnProperty.call(t,a)&&(c[a]=t[a]);c.originalType=e,c[d]="string"==typeof e?e:n,p[1]=c;for(var l=2;l{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>p,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var r=i(87462),n=(i(67294),i(3905));const o={title:"Specific DB type",description:"This article explains how to create & work with a Specific DB Type field.",tags:["Fields","Field types","Custom types","Specific DB type"],keywords:["Fields","Field types","Custom types","Specific DB type","Create specific db type field"]},p=void 0,c={unversionedId:"fields/field-types/custom-types/specific-db-type",id:"fields/field-types/custom-types/specific-db-type",title:"Specific DB type",description:"This article explains how to create & work with a Specific DB Type field.",source:"@site/docs/070.fields/040.field-types/050.custom-types/070.specific-db-type.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/specific-db-type",permalink:"/fields/field-types/custom-types/specific-db-type",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/070.specific-db-type.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Specific DB type",permalink:"/tags/specific-db-type"}],version:"current",sidebarPosition:70,frontMatter:{title:"Specific DB type",description:"This article explains how to create & work with a Specific DB Type field.",tags:["Fields","Field types","Custom types","Specific DB type"],keywords:["Fields","Field types","Custom types","Specific DB type","Create specific db type field"]},sidebar:"tutorialSidebar",previous:{title:"Geometry",permalink:"/fields/field-types/custom-types/geometry"},next:{title:"JSON",permalink:"/fields/field-types/custom-types/json"}},a={},l=[{value:"Create a Specific DB Type field",id:"create-a-specific-db-type-field",level:2}],s={toc:l},d="wrapper";function f(e){let{components:t,...o}=e;return(0,n.kt)(d,(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"create-a-specific-db-type-field"},"Create a Specific DB Type field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Specific DB Type")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Provide DB specific data type configurations"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:i(23407).Z,width:"2874",height:"1522"})),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"Specific DB type is available only for external Data source connections")))}f.isMDXComponent=!0},23407:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/specific-db-type-8f55b4cd889fbfd2d9a88abc8a4c2b97.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/69895f00.d201c760.js b/packages/noco-docs/dist/assets/js/69895f00.d201c760.js new file mode 100644 index 0000000000..e69743ac9d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/69895f00.d201c760.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4289],{3905:(e,t,i)=>{i.d(t,{Zo:()=>d,kt:()=>f});var l=i(67294);function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function n(e){for(var t=1;t=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}var c=l.createContext({}),s=function(e){var t=l.useContext(c),i=t;return e&&(i="function"==typeof e?e(t):n(n({},t),e)),i},d=function(e){var t=s(e.components);return l.createElement(c.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var i=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),p=s(i),u=r,f=p["".concat(c,".").concat(u)]||p[u]||m[u]||a;return i?l.createElement(f,n(n({ref:t},d),{},{components:i})):l.createElement(f,n({ref:t},d))}));function f(e,t){var i=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=i.length,n=new Array(a);n[0]=u;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[p]="string"==typeof e?e:r,n[1]=o;for(var s=2;s{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>m,frontMatter:()=>a,metadata:()=>o,toc:()=>s});var l=i(87462),r=(i(67294),i(3905));const a={title:"Decimal",description:"This article explains how to create & work with a Decimal field.",tags:["Fields","Field types","Numerical types","Decimal"],keywords:["Fields","Field types","Numerical types","Decimal","Create decimal field"]},n=void 0,o={unversionedId:"fields/field-types/numerical/decimal",id:"fields/field-types/numerical/decimal",title:"Decimal",description:"This article explains how to create & work with a Decimal field.",source:"@site/docs/070.fields/040.field-types/020.numerical/020.decimal.md",sourceDirName:"070.fields/040.field-types/020.numerical",slug:"/fields/field-types/numerical/decimal",permalink:"/fields/field-types/numerical/decimal",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/020.numerical/020.decimal.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Numerical types",permalink:"/tags/numerical-types"},{label:"Decimal",permalink:"/tags/decimal"}],version:"current",sidebarPosition:20,frontMatter:{title:"Decimal",description:"This article explains how to create & work with a Decimal field.",tags:["Fields","Field types","Numerical types","Decimal"],keywords:["Fields","Field types","Numerical types","Decimal","Create decimal field"]},sidebar:"tutorialSidebar",previous:{title:"Number",permalink:"/fields/field-types/numerical/number"},next:{title:"Percent",permalink:"/fields/field-types/numerical/percent"}},c={},s=[{value:"Create a decimal field",id:"create-a-decimal-field",level:2},{value:"Similar numerical fields",id:"similar-numerical-fields",level:2}],d={toc:s},p="wrapper";function m(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,l.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Decimal")," field type is used to store decimal values. Use cases include storing ",(0,r.kt)("inlineCode",{parentName:"p"},"salary"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"price"),", etc. NocoDB supports precision of upto 8 digits."),(0,r.kt)("h2",{id:"create-a-decimal-field"},"Create a decimal field"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,r.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,r.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,r.kt)("li",{parentName:"ol"},"Select the field type as ",(0,r.kt)("inlineCode",{parentName:"li"},"Decimal")," from the dropdown."),(0,r.kt)("li",{parentName:"ol"},"Configure ",(0,r.kt)("inlineCode",{parentName:"li"},"Precision"),"- NocoDB supports upto 8 digits of precision."),(0,r.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,r.kt)("li",{parentName:"ol"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"image",src:i(1972).Z,width:"2878",height:"1360"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Default decimal precision is 1 digit"))),(0,r.kt)("h2",{id:"similar-numerical-fields"},"Similar numerical fields"),(0,r.kt)("p",null,"Following are the other numerical fields available in NocoDB, with some custom add-on features."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/number"},"Number")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/percent"},"Percent")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/currency"},"Currency"))))}m.isMDXComponent=!0},1972:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/decimal-8e66d00b5270b1f38775d7e71d46975a.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/69bed9e5.d9e8352d.js b/packages/noco-docs/dist/assets/js/69bed9e5.d9e8352d.js new file mode 100644 index 0000000000..4bf9557324 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/69bed9e5.d9e8352d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3869],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function n(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=a.createContext({}),c=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):n(n({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),u=o,g=d["".concat(s,".").concat(u)]||d[u]||h[u]||i;return r?a.createElement(g,n(n({ref:t},p),{},{components:r})):a.createElement(g,n({ref:t},p))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,n=new Array(i);n[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,n[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=r(87462),o=(r(67294),r(3905));const i={title:"Record height",description:"Learn how to adjust the height of records in NocoDB.",tags:["Table operations","Record height","Grid view"],keywords:["table operations","record height"]},n=void 0,l={unversionedId:"table-operations/row-height",id:"table-operations/row-height",title:"Record height",description:"Learn how to adjust the height of records in NocoDB.",source:"@site/docs/060.table-operations/060.row-height.md",sourceDirName:"060.table-operations",slug:"/table-operations/row-height",permalink:"/table-operations/row-height",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/060.row-height.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Record height",permalink:"/tags/record-height"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:60,frontMatter:{title:"Record height",description:"Learn how to adjust the height of records in NocoDB.",tags:["Table operations","Record height","Grid view"],keywords:["table operations","record height"]},sidebar:"tutorialSidebar",previous:{title:"Grouping records",permalink:"/table-operations/group-by"},next:{title:"Search",permalink:"/table-operations/search"}},s={},c=[{value:"Short",id:"short",level:3},{value:"Medium",id:"medium",level:3},{value:"Tall",id:"tall",level:3},{value:"Extra",id:"extra",level:3},{value:"Related topics",id:"related-topics",level:3}],p={toc:c},d="wrapper";function h(e){let{components:t,...i}=e;return(0,o.kt)(d,(0,a.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"NocoDB offers users the flexibility to adjust the display height of records within the spreadsheet grid to four distinct levels: Short (the default setting), Medium, Tall, and Extra. This feature proves valuable when working with extensive text fields and multi-select fields, as it enables users to present a greater amount of content within each cell. "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"record height",src:r(61033).Z,width:"2294",height:"812"})),(0,o.kt)("h3",{id:"short"},"Short"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Short",src:r(93809).Z,width:"2306",height:"1414"})),(0,o.kt)("h3",{id:"medium"},"Medium"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Medium",src:r(3242).Z,width:"2306",height:"1414"})),(0,o.kt)("h3",{id:"tall"},"Tall"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Tall",src:r(84622).Z,width:"2306",height:"1414"})),(0,o.kt)("h3",{id:"extra"},"Extra"),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Extra",src:r(92790).Z,width:"2306",height:"1408"})),(0,o.kt)("h3",{id:"related-topics"},"Related topics"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"download"},"Download"))))}h.isMDXComponent=!0},61033:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/row-height-1-b999107b8ea25b026213a6c67498695b.png"},93809:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/row-height-2-422a0b8fac325abb9392cbd5763ee5c7.png"},3242:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/row-height-3-8b665502bcb2cb4bde649e53698161f5.png"},84622:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/row-height-4-6672aa1a7be4bd6075b285f7324c61bc.png"},92790:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/row-height-5-e58d68386f8aa821d5a32c7411ef4ba9.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/69bee932.66b73e69.js b/packages/noco-docs/dist/assets/js/69bee932.66b73e69.js new file mode 100644 index 0000000000..6d5db8158e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/69bee932.66b73e69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3454],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>u});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),d=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=d(e.components);return a.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),c=d(r),g=n,u=c["".concat(l,".").concat(g)]||c[g]||m[g]||o;return r?a.createElement(u,i(i({ref:t},p),{},{components:r})):a.createElement(u,i({ref:t},p))}));function u(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=g;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:n,i[1]=s;for(var d=2;d{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var a=r(87462),n=(r(67294),r(3905));const o={title:"NocoDB terminologies",keywords:["NocoDB terminologies","NocoDB terms","NocoDB keywords"]},i=void 0,s={unversionedId:"getting-started/terminologies",id:"getting-started/terminologies",title:"NocoDB terminologies",description:"To maximize your use of NocoDB, it's beneficial to become familiar with some common terms.",source:"@site/docs/020.getting-started/030.terminologies.md",sourceDirName:"020.getting-started",slug:"/getting-started/terminologies",permalink:"/getting-started/terminologies",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/030.terminologies.md",tags:[],version:"current",sidebarPosition:30,frontMatter:{title:"NocoDB terminologies",keywords:["NocoDB terminologies","NocoDB terms","NocoDB keywords"]},sidebar:"tutorialSidebar",previous:{title:"Quick start",permalink:"/getting-started/quick-start"},next:{title:"Keyboard shortcuts",permalink:"/getting-started/keyboard-shortcuts"}},l={},d=[{value:"Layout",id:"layout",level:2},{value:"Terminologies",id:"terminologies",level:2}],p={toc:d},c="wrapper";function m(e){let{components:t,...o}=e;return(0,n.kt)(c,(0,a.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"To maximize your use of NocoDB, it's beneficial to become familiar with some common terms."),(0,n.kt)("p",null,"Within this section, we've provided straightforward explanations for keywords and phrases that are relevant to NocoDB's functionality and capabilities. This resource is designed to assist you in gaining a deeper understanding of NocoDB as you embark on the process of setting up workspaces, bases, tables, and various other elements within the platform."),(0,n.kt)("h2",{id:"layout"},"Layout"),(0,n.kt)("p",null,"The layout below shows the main parts of NocoDB's user interface."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:r(87950).Z,width:"2007",height:"1041"})),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Sidebar"),": This component provides quick access to workspaces, bases, tables, and views, facilitating easy navigation within NocoDB. ")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Navbar"),": In the Navbar, you'll find essential tools like the Switcher, allowing users to switch between data mode and details mode, and the Share button for collaborative workspace and view sharing.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Toolbar"),": The Toolbar equips users with various tools to manage records within tables and views effectively. It includes features for sorting, filtering, and editing data, enhancing your control over information.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"View Area"),": The central workspace where data can be viewed in multiple formats - Grid, Gallery, Kanban or Form.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Footbar"),": A pagination bar for navigating between paginated records. "))),(0,n.kt)("h2",{id:"terminologies"},"Terminologies"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:"right"},"Term"),(0,n.kt)("th",{parentName:"tr",align:"left"},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Base"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A base is a collection of one or more tables, often related and linked to one another. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Project"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Base Owner"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Member who had created base. There can be only one owner for a base & ownership is non-transferable")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Base member"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Base member with specific access permissions. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Member")," ",(0,n.kt)("inlineCode",{parentName:"td"},"User"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Cell"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A cell represents the space created where a column and a row intersect within a grid-like structure. It serves as the fundamental unit for storing data")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Field"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A field or column in a table is a container for values that share the same data type. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Column"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Modal"),(0,n.kt)("td",{parentName:"tr",align:"left"},'In the context of user interfaces, a modal is a type of dialog or overlay that appears on top of the main content or interface and requires user interaction before the user can proceed. Modals are often used to gather user input, display alerts, or confirm actions. They typically "block" the rest of the interface until the user dismisses them, making them a focused and attention-grabbing element')),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Record"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A record represents a row in a table. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Row"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Table"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A base is housed in tables, where data is logically arranged into rows and columns. A base can have multiple tables. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Model"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Term"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Description")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"View"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A view defines how data within a table is presented and interacted with. Default view type is the grid view; other supported view types include form, gallery, and kanban views.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Webhook"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A webhook is a mechanism that allows one system to send real-time data to another system or application. It enables automated notifications and data synchronization between different services or platforms by triggering predefined actions or events in response to specific events or updates in the source system.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Workspace Owner"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Member who had created workspace. There can be only one owner for a workspace & ownership is non-transferable")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Workspace member"),(0,n.kt)("td",{parentName:"tr",align:"left"},"Workspace member with specific access permissions. Alternative term ",(0,n.kt)("inlineCode",{parentName:"td"},"Member")," ",(0,n.kt)("inlineCode",{parentName:"td"},"User"))),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:"right"},"Workspace"),(0,n.kt)("td",{parentName:"tr",align:"left"},"A workspace is a collection of one or more bases. It offers collaborative access to bases by enabling you to bring together interconnected tables, views, and various elements into a unified and organized entity")))))}m.isMDXComponent=!0},87950:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/layout-overview-e73d351486ff105d59a64cc0d1801f12.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6a0eac6b.e4313a7a.js b/packages/noco-docs/dist/assets/js/6a0eac6b.e4313a7a.js new file mode 100644 index 0000000000..d607d0c2a3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6a0eac6b.e4313a7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4158],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,n=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(a),f=o,m=c["".concat(s,".").concat(f)]||c[f]||u[f]||n;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=a.length,l=new Array(n);l[0]=f;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:o,l[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>n,metadata:()=>i,toc:()=>p});var r=a(87462),o=(a(67294),a(3905));const n={title:"Download",tags:["Table operations","Download","Gallery view","Kanban view","Grid view","CSV","JSON","Excel"],keywords:["NocoDB table","download","export"]},l=void 0,i={unversionedId:"table-operations/download",id:"table-operations/download",title:"Download",description:"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.",source:"@site/docs/060.table-operations/080.download.md",sourceDirName:"060.table-operations",slug:"/table-operations/download",permalink:"/table-operations/download",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/080.download.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Download",permalink:"/tags/download"},{label:"Gallery view",permalink:"/tags/gallery-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Grid view",permalink:"/tags/grid-view"},{label:"CSV",permalink:"/tags/csv"},{label:"JSON",permalink:"/tags/json"},{label:"Excel",permalink:"/tags/excel"}],version:"current",sidebarPosition:80,frontMatter:{title:"Download",tags:["Table operations","Download","Gallery view","Kanban view","Grid view","CSV","JSON","Excel"],keywords:["NocoDB table","download","export"]},sidebar:"tutorialSidebar",previous:{title:"Search",permalink:"/table-operations/search"},next:{title:"Table details overview",permalink:"/table-details/table-details-overview"}},s={},p=[{value:"Download Data",id:"download-data",level:3},{value:"Related topics",id:"related-topics",level:3}],d={toc:p},c="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(c,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the ",(0,o.kt)("inlineCode",{parentName:"p"},"Filter")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"Sort")," feature to further refine your data."),(0,o.kt)("h3",{id:"download-data"},"Download Data"),(0,o.kt)("p",null,"To export data from NocoDB, follow these steps:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on the ",(0,o.kt)("inlineCode",{parentName:"li"},"...")," button in the toolbar menu."),(0,o.kt)("li",{parentName:"ol"},"Choose the ",(0,o.kt)("inlineCode",{parentName:"li"},"Download")," option."),(0,o.kt)("li",{parentName:"ol"},"Select the desired file format from the dropdown menu.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Export",src:a(30549).Z,width:"2376",height:"904"})),(0,o.kt)("h3",{id:"related-topics"},"Related topics"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"row-height"},"record height")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"search"},"Quick Search"))))}u.isMDXComponent=!0},30549:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/download-7abfaf6c07a06e7669524f44c1832cc3.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6a105426.d17cfd2e.js b/packages/noco-docs/dist/assets/js/6a105426.d17cfd2e.js new file mode 100644 index 0000000000..6015372817 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6a105426.d17cfd2e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7592],{51533:t=>{t.exports=JSON.parse('{"label":"Getting Started","permalink":"/tags/getting-started","allTagsPath":"/tags","count":1,"items":[{"id":"getting-started/keyboard-shortcuts","title":"Keyboard shortcuts","description":"Quick Actions","permalink":"/getting-started/keyboard-shortcuts"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6a2ab9d1.b209bc54.js b/packages/noco-docs/dist/assets/js/6a2ab9d1.b209bc54.js new file mode 100644 index 0000000000..e941ce4b46 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6a2ab9d1.b209bc54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8537],{40264:e=>{e.exports=JSON.parse('{"label":"Date & Time","permalink":"/tags/date-time","allTagsPath":"/tags","count":5,"items":[{"id":"fields/field-types/date-time-based/date","title":"Date","description":"This article explains how to create & work with a Date field.","permalink":"/fields/field-types/date-time-based/date"},{"id":"fields/field-types/formula/date-functions","title":"Date functions","description":"This article explains various date functions that can be used in formula fields.","permalink":"/fields/field-types/formula/date-functions"},{"id":"fields/field-types/date-time-based/date-time","title":"Date Time","description":"This article explains how to create & work with a Date Time field.","permalink":"/fields/field-types/date-time-based/date-time"},{"id":"fields/field-types/date-time-based/duration","title":"Duration","description":"This article explains how to create & work with a Duration field.","permalink":"/fields/field-types/date-time-based/duration"},{"id":"fields/field-types/date-time-based/time","title":"Time","description":"This article explains how to create & work with a Time field.","permalink":"/fields/field-types/date-time-based/time"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6aee45b4.3a6ca145.js b/packages/noco-docs/dist/assets/js/6aee45b4.3a6ca145.js new file mode 100644 index 0000000000..1fc8447183 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6aee45b4.3a6ca145.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8535],{61777:e=>{e.exports=JSON.parse('{"label":"Select based types","permalink":"/tags/select-based-types","allTagsPath":"/tags","count":2,"items":[{"id":"fields/field-types/select-based/multi-select","title":"Multi Select","description":"This article explains how to create & work with a Multi select field.","permalink":"/fields/field-types/select-based/multi-select"},{"id":"fields/field-types/select-based/single-select","title":"Single Select","description":"This article explains how to create & work with a Single select field.","permalink":"/fields/field-types/select-based/single-select"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6d2f78d9.4528cd42.js b/packages/noco-docs/dist/assets/js/6d2f78d9.4528cd42.js new file mode 100644 index 0000000000..9939c3bc21 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6d2f78d9.4528cd42.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[254],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),c=p(n),u=o,m=c["".concat(s,".").concat(u)]||c[u]||f[u]||l;return n?r.createElement(m,a(a({ref:t},d),{},{components:n})):r.createElement(m,a({ref:t},d))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=n.length,a=new Array(l);a[0]=u;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[c]="string"==typeof e?e:o,a[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>f,frontMatter:()=>l,metadata:()=>i,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const l={title:"JSON",tags:["Fields","Field types","Custom types","JSON"]},a=void 0,i={unversionedId:"fields/field-types/custom-types/json",id:"fields/field-types/custom-types/json",title:"JSON",description:"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.",source:"@site/docs/070.fields/040.field-types/050.custom-types/080.json.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/json",permalink:"/fields/field-types/custom-types/json",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/080.json.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"JSON",permalink:"/tags/json"}],version:"current",sidebarPosition:80,frontMatter:{title:"JSON",tags:["Fields","Field types","Custom types","JSON"]},sidebar:"tutorialSidebar",previous:{title:"Specific DB type",permalink:"/fields/field-types/custom-types/specific-db-type"},next:{title:"Formula",permalink:"/fields/field-types/formula/formula"}},s={},p=[{value:"Create a JSON field",id:"create-a-json-field",level:2},{value:"Cell display",id:"cell-display",level:3}],d={toc:p},c="wrapper";function f(e){let{components:t,...l}=e;return(0,o.kt)(c,(0,r.Z)({},d,l,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"JSON")," is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs."),(0,o.kt)("h2",{id:"create-a-json-field"},"Create a JSON field"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,o.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,o.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select the field type as ",(0,o.kt)("inlineCode",{parentName:"li"},"JSON")," from the dropdown."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:n(19918).Z,width:"2876",height:"1424"})),(0,o.kt)("h3",{id:"cell-display"},"Cell display"),(0,o.kt)("p",null,"Cell displays the JSON data stored in the field. Click on expand record icon to open the JSON data in an editor modal."))}f.isMDXComponent=!0},19918:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/JSON-11cd3835058fadbd8e0bd98d8dd1fc50.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6f7695df.379c6147.js b/packages/noco-docs/dist/assets/js/6f7695df.379c6147.js new file mode 100644 index 0000000000..96b926cc27 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6f7695df.379c6147.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3011],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>m});var r=t(67294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function s(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var o=r.createContext({}),b=function(e){var a=r.useContext(o),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},c=function(e){var a=b(e.components);return r.createElement(o.Provider,{value:a},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},h=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,s=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=b(t),h=n,m=d["".concat(o,".").concat(h)]||d[h]||p[h]||s;return t?r.createElement(m,i(i({ref:a},c),{},{components:t})):r.createElement(m,i({ref:a},c))}));function m(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var s=t.length,i=new Array(s);i[0]=h;var l={};for(var o in a)hasOwnProperty.call(a,o)&&(l[o]=a[o]);l.originalType=e,l[d]="string"==typeof e?e:n,i[1]=l;for(var b=2;b{t.r(a),t.d(a,{assets:()=>o,contentTitle:()=>i,default:()=>p,frontMatter:()=>s,metadata:()=>l,toc:()=>b});var r=t(87462),n=(t(67294),t(3905));const s={title:"Share base",description:"Procedures to share a base & generating embedded iframe",tags:["Bases","Share","Collaboration","Share base"],keywords:["NocoDB base","share base","base collaboration","Public share"]},i=void 0,l={unversionedId:"bases/share-base",id:"bases/share-base",title:"Share base",description:"Procedures to share a base & generating embedded iframe",source:"@site/docs/040.bases/060.share-base.md",sourceDirName:"040.bases",slug:"/bases/share-base",permalink:"/bases/share-base",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/060.share-base.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Share",permalink:"/tags/share"},{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Share base",permalink:"/tags/share-base"}],version:"current",sidebarPosition:60,frontMatter:{title:"Share base",description:"Procedures to share a base & generating embedded iframe",tags:["Bases","Share","Collaboration","Share base"],keywords:["NocoDB base","share base","base collaboration","Public share"]},sidebar:"tutorialSidebar",previous:{title:"Base collaboration",permalink:"/bases/base-collaboration"},next:{title:"Actions on base",permalink:"/bases/actions-on-base"}},o={},b=[{value:"Modify Share base",id:"modify-share-base",level:2},{value:"Disable Share base",id:"disable-share-base",level:2},{value:"Share base Access Permissions",id:"share-base-access-permissions",level:2},{value:"Embeddable Frame",id:"embeddable-frame",level:2},{value:"Embed into application's HTML Body",id:"embed-into-applications-html-body",level:3},{value:"Related articles",id:"related-articles",level:2}],c={toc:b},d="wrapper";function p(e){let{components:a,...s}=e;return(0,n.kt)(d,(0,r.Z)({},c,s,{components:a,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"To share a base, follow the steps below:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Navigate to the top right corner of the top navigation bar and click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Share")," button."),(0,n.kt)("li",{parentName:"ol"},"In the ",(0,n.kt)("inlineCode",{parentName:"li"},"Shared base")," section, toggle the switch to ",(0,n.kt)("inlineCode",{parentName:"li"},"Enable public access")," in order to activate the shared base feature."),(0,n.kt)("li",{parentName:"ol"},"The generated link for the shared base will be displayed above and can be utilized to share this project with others. To copy the URL, simply click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Copy Link")," option.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Share base",src:t(3132).Z,width:"3046",height:"994"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Share base",src:t(43320).Z,width:"2874",height:"1790"})),(0,n.kt)("h2",{id:"modify-share-base"},"Modify Share base"),(0,n.kt)("p",null,"Amending the ",(0,n.kt)("inlineCode",{parentName:"p"},"Share base")," setting will render the previously generated ",(0,n.kt)("inlineCode",{parentName:"p"},"Share base")," link invalid and generate a new link in its place.\nHere are the steps to modify it:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Share")," button located in the top right corner of the toolbar."),(0,n.kt)("li",{parentName:"ol"},"Toggle the option labeled ",(0,n.kt)("inlineCode",{parentName:"li"},"Enable public access")," to deactivate the base share."),(0,n.kt)("li",{parentName:"ol"},"Toggle the same option, ",(0,n.kt)("inlineCode",{parentName:"li"},"Enable public access,")," to reactivate the base share, subsequently generating a new link.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Enable public access",src:t(78830).Z,width:"2874",height:"1790"})),(0,n.kt)("h2",{id:"disable-share-base"},"Disable Share base"),(0,n.kt)("p",null,"Disabling ",(0,n.kt)("inlineCode",{parentName:"p"},"Share base")," will render the previously generated ",(0,n.kt)("inlineCode",{parentName:"p"},"Share base")," link invalid\nHere are the steps to disable it:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on the 'Share' button located in the top right corner of the toolbar."),(0,n.kt)("li",{parentName:"ol"},"Toggle the option labeled ",(0,n.kt)("inlineCode",{parentName:"li"},"Enable public access")," to deactivate the base share.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Enable public access",src:t(78830).Z,width:"2874",height:"1790"})),(0,n.kt)("h2",{id:"share-base-access-permissions"},"Share base Access Permissions"),(0,n.kt)("p",null,'The "Shared base" can be configured in two modes:'),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Viewer")," - Users with the provided link will have ",(0,n.kt)("strong",{parentName:"li"},"read-only")," access to the base data."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Editor")," - Users with the provided link will have ",(0,n.kt)("strong",{parentName:"li"},"read and write")," access to the base data.")),(0,n.kt)("p",null,"Toggle ",(0,n.kt)("inlineCode",{parentName:"p"},"Enable Editor Access")," button to configure permissions as desired\n",(0,n.kt)("img",{alt:"Share base edit access",src:t(82630).Z,width:"2874",height:"1790"})),(0,n.kt)("h2",{id:"embeddable-frame"},"Embeddable Frame"),(0,n.kt)("p",null,"The NocoDB interface can be seamlessly integrated into existing applications through the utilization of the ",(0,n.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"},"HTML IFRAME")," attribute. This feature empowers users to embed the NocoDB interface into their applications, allowing for a unified user experience. To generate the embeddable HTML code, follow these steps:"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"To Generate Embeddable HTML Code:")),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click the ",(0,n.kt)("inlineCode",{parentName:"li"},"Share")," button located in the top right corner of the toolbar."),(0,n.kt)("li",{parentName:"ol"},"Within the ",(0,n.kt)("inlineCode",{parentName:"li"},"Shared base link")," tab, select the button to copy the ",(0,n.kt)("inlineCode",{parentName:"li"},"Embeddable HTML code")," to your clipboard.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Share base iFrame",src:t(41464).Z,width:"2874",height:"1790"})),(0,n.kt)("p",null,"Example:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-html"},'\n\n')),(0,n.kt)("h3",{id:"embed-into-applications-html-body"},"Embed into application's HTML Body"),(0,n.kt)("p",null,"Sample code with embedded iframe generated above"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-html"},'\n\n \n \n \n\n')),(0,n.kt)("h2",{id:"related-articles"},"Related articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/create-base"},"Create an empty base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}p.isMDXComponent=!0},3132:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/share-base-1-b9c4bddb603c184a16da76c4e1e08edb.png"},43320:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/share-base-2-07354533111aa13a608996b10640f468.png"},82630:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/share-base-edit-access-b293bc0349998853d6de8a9784ae9e54.png"},78830:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/share-base-enable-public-access-70567245aad03d619b620d838cbdb21a.png"},41464:(e,a,t)=>{t.d(a,{Z:()=>r});const r=t.p+"assets/images/share-base-iframe-5cf906c782389e1cf39b132cd1ab62ac.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/6fe2a298.b467aef4.js b/packages/noco-docs/dist/assets/js/6fe2a298.b467aef4.js new file mode 100644 index 0000000000..5622004f6c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/6fe2a298.b467aef4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7219],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=l(n),m=o,g=u["".concat(p,".").concat(m)]||u[m]||d[m]||a;return n?r.createElement(g,i(i({ref:t},s),{},{components:n})):r.createElement(g,i({ref:t},s))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[u]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Repository structure",description:"Repository Structure",hide_table_of_contents:!0},i=void 0,c={unversionedId:"engineering/repository-structure",id:"version-0.109.7/engineering/repository-structure",title:"Repository structure",description:"Repository Structure",source:"@site/versioned_docs/version-0.109.7/050.engineering/020.repository-structure.md",sourceDirName:"050.engineering",slug:"/engineering/repository-structure",permalink:"/0.109.7/engineering/repository-structure",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/020.repository-structure.md",tags:[],version:"0.109.7",sidebarPosition:20,frontMatter:{title:"Repository structure",description:"Repository Structure",hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Architecture Overview",permalink:"/0.109.7/engineering/architecture"},next:{title:"Development Setup",permalink:"/0.109.7/engineering/development-setup"}},p={},l=[],s={toc:l},u="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"We use ",(0,o.kt)("inlineCode",{parentName:"p"},"Lerna")," to manage multi-packages. We have the following ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/tree/master/packages"},"packages"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-cli")," : A CLI to create NocoDB app.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb-sdk"),": API client sdk of nocodb.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-gui"),": NocoDB Frontend.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-lib-gui"),": The build version of ",(0,o.kt)("inlineCode",{parentName:"p"},"nc-gui")," which will be used in ",(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nc-plugin"),": Plugin template.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/noco-blog"),": NocoDB Blog which will be auto-released to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/noco-blog"},"nocodb/noco-blog"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/noco-docs"),": NocoDB Documentation which will be auto-released to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/noco-docs"},"nocodb/noco-docs"),".")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("inlineCode",{parentName:"p"},"packages/nocodb"),": NocoDB Backend, hosted in ",(0,o.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/nocodb"},"NPM"),"."))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/70424118.3dfed9c1.js b/packages/noco-docs/dist/assets/js/70424118.3dfed9c1.js new file mode 100644 index 0000000000..237a98129f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/70424118.3dfed9c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[332],{15231:e=>{e.exports=JSON.parse('{"label":"Engineering","permalink":"/tags/engineering","allTagsPath":"/tags","count":8,"items":[{"id":"engineering/architecture","title":"Architecture overview","description":"Simple overview of NocoDB architecture","permalink":"/engineering/architecture"},{"id":"engineering/development-setup","title":"Development setup","description":"How to set-up your development environment","permalink":"/engineering/development-setup"},{"id":"engineering/translation","title":"i18n translation","description":"Contribute to NocoDB\'s i18n translation","permalink":"/engineering/translation"},{"id":"engineering/playwright","title":"Playwright E2E testing","description":"Overview to playwright based e2e tests","permalink":"/engineering/playwright"},{"id":"engineering/builds-and-releases","title":"Releases & builds","description":"NocoDB creates Docker and Binaries for each PR","permalink":"/engineering/builds-and-releases"},{"id":"engineering/repository-structure","title":"Repository structure","description":"Repository Structure","permalink":"/engineering/repository-structure"},{"id":"engineering/writing-docs","title":"Writing docs","description":"Overview to writing docs","permalink":"/engineering/writing-docs"},{"id":"engineering/unit-testing","title":"Writing unit tests","description":"Overview to Unit Testing","permalink":"/engineering/unit-testing"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7077aad6.2c994371.js b/packages/noco-docs/dist/assets/js/7077aad6.2c994371.js new file mode 100644 index 0000000000..4a4090e83f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7077aad6.2c994371.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5971],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>k});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var r=n.createContext({}),c=function(e){var t=n.useContext(r),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return n.createElement(r.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,r=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=c(a),p=i,k=u["".concat(r,".").concat(p)]||u[p]||m[p]||o;return a?n.createElement(k,l(l({ref:t},d),{},{components:a})):n.createElement(k,l({ref:t},d))}));function k(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,l=new Array(o);l[0]=p;var s={};for(var r in t)hasOwnProperty.call(t,r)&&(s[r]=t[r]);s.originalType=e,s[u]="string"==typeof e?e:i,l[1]=s;for(var c=2;c{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var n=a(87462),i=(a(67294),a(3905));const o={title:"Actions on Data sources",description:"Learn more about actions that can be performed on data sources in NocoDB.",tags:["Data sources","UI ACL","Audit","Relations","Edit","Remove","Visibility"],keywords:["NocoDB data source","UI ACL","Audit logs","Relations","Edit","Unlink","Visibility"]},l=void 0,s={unversionedId:"data-sources/actions-on-data-sources",id:"data-sources/actions-on-data-sources",title:"Actions on Data sources",description:"Learn more about actions that can be performed on data sources in NocoDB.",source:"@site/docs/100.data-sources/040.actions-on-data-sources.md",sourceDirName:"100.data-sources",slug:"/data-sources/actions-on-data-sources",permalink:"/data-sources/actions-on-data-sources",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/100.data-sources/040.actions-on-data-sources.md",tags:[{label:"Data sources",permalink:"/tags/data-sources"},{label:"UI ACL",permalink:"/tags/ui-acl"},{label:"Audit",permalink:"/tags/audit"},{label:"Relations",permalink:"/tags/relations"},{label:"Edit",permalink:"/tags/edit"},{label:"Remove",permalink:"/tags/remove"},{label:"Visibility",permalink:"/tags/visibility"}],version:"current",sidebarPosition:40,frontMatter:{title:"Actions on Data sources",description:"Learn more about actions that can be performed on data sources in NocoDB.",tags:["Data sources","UI ACL","Audit","Relations","Edit","Remove","Visibility"],keywords:["NocoDB data source","UI ACL","Audit logs","Relations","Edit","Unlink","Visibility"]},sidebar:"tutorialSidebar",previous:{title:"Sync with Data source",permalink:"/data-sources/sync-with-data-source"},next:{title:"Roles & permissions overview",permalink:"/roles-and-permissions/roles-permissions-overview"}},r={},c=[{value:"Edit external database configuration parameters",id:"edit-external-database-configuration-parameters",level:2},{value:"Remove data source",id:"remove-data-source",level:2},{value:"Data source visibility",id:"data-source-visibility",level:2},{value:"UI Access Control",id:"ui-access-control",level:2},{value:"Audit logs",id:"audit-logs",level:2},{value:"Relations",id:"relations",level:2},{value:"Junction table names within Relations",id:"junction-table-names-within-relations",level:3}],d={toc:c},u="wrapper";function m(e){let{components:t,...o}=e;return(0,i.kt)(u,(0,n.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"edit-external-database-configuration-parameters"},"Edit external database configuration parameters"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Edit")," icon listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to access ERD (Relations view) for\nGo to ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources"),", click ",(0,i.kt)("inlineCode",{parentName:"li"},"Edit")," icon, you can re-configure database credentials.",(0,i.kt)("br",{parentName:"li"}),"Please make sure database configuration parameters are valid. Any incorrect parameters could lead to schema loss!")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"relations",src:a(40826).Z,width:"2876",height:"928"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"edit db config",src:a(38750).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"remove-data-source"},"Remove data source"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete")," icon listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to Unlink")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"datasource unlink",src:a(84592).Z,width:"2876",height:"928"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"Unlinking a data source will not delete the external data source. It will only remove the data source from the current project.")),(0,i.kt)("h2",{id:"data-source-visibility"},"Data source visibility"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Toggle radio button listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Visibility")," column for the data source that you wish to hide/un-hide")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"datasource visibility",src:a(42093).Z,width:"2876",height:"928"})),(0,i.kt)("h2",{id:"ui-access-control"},"UI Access Control"),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"UI Access Control is available only in Open Source version of NocoDB.")),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"UI ACL")," button listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to manage UI access control for"),(0,i.kt)("li",{parentName:"ol"},"On the UI ACL modal, you can see the list of tables available in the data source as rows & roles available as columns. Toggle checkboxes to enable/disable access to tables for specific roles."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save")," button to save the changes")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"ui acl",src:a(31707).Z,width:"2876",height:"928"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"ui acl",src:a(24330).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"audit-logs"},"Audit logs"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Audit")," button listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to access Audit logs for")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"audit",src:a(72689).Z,width:"2876",height:"928"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"audit logs",src:a(13179).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"relations"},"Relations"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Access Base context menu by clicking on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Base")," name in the left sidebar"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Data Sources")," tab"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Relations")," button listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Actions")," column for the data source that you wish to access ERD (Relations view) for")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"relations",src:a(35171).Z,width:"2876",height:"928"})),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/c3775d27-f75d-4263-8903-dd66427de4b4",alt:"relations"})),(0,i.kt)("h3",{id:"junction-table-names-within-relations"},"Junction table names within Relations"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Enable ",(0,i.kt)("inlineCode",{parentName:"li"},"Show M2M Tables")," within ",(0,i.kt)("inlineCode",{parentName:"li"},"Project Settings")," menu"),(0,i.kt)("li",{parentName:"ul"},"Double-click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Show Fields")," to see additional checkboxes get enabled.",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Enabling which you should be able to see junction tables and their table names.")))),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(90534).Z,width:"2880",height:"1800"})))}m.isMDXComponent=!0},13179:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/audit-logs-c781137e1b06c22923d2da20ca02fcf0.png"},72689:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/audit-8486b02fd5d59268886ab05c697bd747.png"},31707:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-3-702f8672d11868999be1db2082089c6d.png"},35171:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-4-0d1aded7e8c2f19c54cbd3b1ae404194.png"},40826:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-edit-c8839805c570f2eaef08012a94f31246.png"},84592:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-unlink-517f290e2d4be67315dd4336bd699ce4.png"},42093:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/data-source-visibility-4c2aa0d95c0280597aac2754392abaae.png"},38750:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/edit-base-9071d099ef7f2dcb99604c31f0ab60f8.png"},90534:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/junction-table-28270cb936c6107d21e68edaaed04913.png"},24330:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/ui-acl-52e141d26e976acba3a9e8591c59ea18.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/709f8fcb.280a5e25.js b/packages/noco-docs/dist/assets/js/709f8fcb.280a5e25.js new file mode 100644 index 0000000000..c6be39ab60 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/709f8fcb.280a5e25.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4021],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function o(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function c(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=n.createContext({}),i=function(t){var e=n.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):c(c({},e),t)),a},d=function(t){var e=i(t.components);return n.createElement(s.Provider,{value:e},t.children)},u="mdxType",p={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,o=t.originalType,s=t.parentName,d=l(t,["components","mdxType","originalType","parentName"]),u=i(a),m=r,k=u["".concat(s,".").concat(m)]||u[m]||p[m]||o;return a?n.createElement(k,c(c({ref:e},d),{},{components:a})):n.createElement(k,c({ref:e},d))}));function k(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var o=a.length,c=new Array(o);c[0]=m;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[u]="string"==typeof t?t:r,c[1]=l;for(var i=2;i{a.r(e),a.d(e,{assets:()=>s,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>i});var n=a(87462),r=(a(67294),a(3905));const o={title:"Connect to a Data source",description:"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.",tags:["Data Sources","Connect","External","PG","MySQL"],keywords:["NocoDB data source","connect data source","external data source","PG data source","MySQL data source"]},c=void 0,l={unversionedId:"data-sources/connect-to-data-source",id:"data-sources/connect-to-data-source",title:"Connect to a Data source",description:"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.",source:"@site/docs/100.data-sources/020.connect-to-data-source.md",sourceDirName:"100.data-sources",slug:"/data-sources/connect-to-data-source",permalink:"/data-sources/connect-to-data-source",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/100.data-sources/020.connect-to-data-source.md",tags:[{label:"Data Sources",permalink:"/tags/data-sources"},{label:"Connect",permalink:"/tags/connect"},{label:"External",permalink:"/tags/external"},{label:"PG",permalink:"/tags/pg"},{label:"MySQL",permalink:"/tags/my-sql"}],version:"current",sidebarPosition:20,frontMatter:{title:"Connect to a Data source",description:"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.",tags:["Data Sources","Connect","External","PG","MySQL"],keywords:["NocoDB data source","connect data source","external data source","PG data source","MySQL data source"]},sidebar:"tutorialSidebar",previous:{title:"Data sources overview",permalink:"/data-sources/data-source-overview"},next:{title:"Sync with Data source",permalink:"/data-sources/sync-with-data-source"}},s={},i=[],d={toc:i},u="wrapper";function p(t){let{components:e,...o}=t;return(0,r.kt)(u,(0,n.Z)({},d,o,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"To connect to an external data source, follow the steps below:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Access Base context menu by clicking on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Base")," name in the left sidebar")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Select ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources")," tab")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Click on ",(0,r.kt)("inlineCode",{parentName:"p"},"+ New Data Source")," button")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"On the pop-up modal, provide the following details:"),(0,r.kt)("table",{parentName:"li"},(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Field Name"),(0,r.kt)("th",{parentName:"tr",align:null},"Description"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Source Name"),(0,r.kt)("td",{parentName:"tr",align:null},"Name for this data source for display on NocoDB UI")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Database Type"),(0,r.kt)("td",{parentName:"tr",align:null},"Type of the data source. Currently, NocoDB supports PostgreSQL & MySQL data sources.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Host Address"),(0,r.kt)("td",{parentName:"tr",align:null},"Hostname of the data source")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Port Number"),(0,r.kt)("td",{parentName:"tr",align:null},"Port number of the data source")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Username"),(0,r.kt)("td",{parentName:"tr",align:null},"Username to connect to the database")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Password"),(0,r.kt)("td",{parentName:"tr",align:null},"Password to connect to the database")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Database"),(0,r.kt)("td",{parentName:"tr",align:null},"Name of the database to connect to")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Schema name"),(0,r.kt)("td",{parentName:"tr",align:null},"Name of the schema to connect to"))))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Click on ",(0,r.kt)("inlineCode",{parentName:"p"},"Test Database Connection")," button to verify the connection")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Wait for the connection to be verified. "))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"After connection is successful, ",(0,r.kt)("inlineCode",{parentName:"li"},"Submit")," button will be enabled. "),(0,r.kt)("li",{parentName:"ul"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Submit")," button to save the data source.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"data source-1",src:a(34577).Z,width:"2876",height:"984"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"data source-2",src:a(34530).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"data source-3",src:a(58071).Z,width:"2880",height:"1800"})))}p.isMDXComponent=!0},34577:(t,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/data-source-connect-1-e1cd8c562d3d3db9699aba4395d8a800.png"},34530:(t,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/data-source-connect-2-5eaa0a1ab29767749a9ea725e28ad47c.png"},58071:(t,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/data-source-connect-3-48b79f4e92d396e681c0ede769e990d9.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/70efa42e.177ad6fa.js b/packages/noco-docs/dist/assets/js/70efa42e.177ad6fa.js new file mode 100644 index 0000000000..c3e7e0bf57 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/70efa42e.177ad6fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4815],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>f});var l=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var m=l.createContext({}),p=function(e){var t=l.useContext(m),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},s=function(e){var t=p(e.components);return l.createElement(m.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},b=l.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,m=e.parentName,s=n(e,["components","mdxType","originalType","parentName"]),c=p(a),b=i,f=c["".concat(m,".").concat(b)]||c[b]||d[b]||r;return a?l.createElement(f,o(o({ref:t},s),{},{components:a})):l.createElement(f,o({ref:t},s))}));function f(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=b;var n={};for(var m in t)hasOwnProperty.call(t,m)&&(n[m]=t[m]);n.originalType=e,n[c]="string"==typeof e?e:i,o[1]=n;for(var p=2;p{a.r(t),a.d(t,{assets:()=>m,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>p});var l=a(87462),i=(a(67294),a(3905));const r={title:"Create table via import",description:"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.",tags:["Tables","Import","CSV","Excel","JSON"],keywords:["NocoDB table","create table","import table","import csv","import excel","import json"]},o=void 0,n={unversionedId:"tables/create-table-via-import",id:"tables/create-table-via-import",title:"Create table via import",description:"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.",source:"@site/docs/050.tables/030.create-table-via-import.md",sourceDirName:"050.tables",slug:"/tables/create-table-via-import",permalink:"/tables/create-table-via-import",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/050.tables/030.create-table-via-import.md",tags:[{label:"Tables",permalink:"/tags/tables"},{label:"Import",permalink:"/tags/import"},{label:"CSV",permalink:"/tags/csv"},{label:"Excel",permalink:"/tags/excel"},{label:"JSON",permalink:"/tags/json"}],version:"current",sidebarPosition:30,frontMatter:{title:"Create table via import",description:"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.",tags:["Tables","Import","CSV","Excel","JSON"],keywords:["NocoDB table","create table","import table","import csv","import excel","import json"]},sidebar:"tutorialSidebar",previous:{title:"Create empty table",permalink:"/tables/create-table"},next:{title:"Import data into an existing table",permalink:"/tables/import-data-into-existing-table"}},m={},p=[{value:"Import table from CSV / Excel / JSON",id:"import-table-from-csv--excel--json",level:2},{value:"Accessing import modal",id:"accessing-import-modal",level:3},{value:"1. From the base dashboard",id:"1-from-the-base-dashboard",level:4},{value:"2. From the base context menu",id:"2-from-the-base-context-menu",level:4},{value:"Importing file",id:"importing-file",level:3},{value:"1. Upload from local directory",id:"1-upload-from-local-directory",level:4},{value:"2. Upload from URL",id:"2-upload-from-url",level:4},{value:"Import configurations",id:"import-configurations",level:3},{value:"Advanced Settings",id:"advanced-settings",level:3},{value:"Related articles",id:"related-articles",level:2}],s={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,i.kt)(c,(0,l.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"import-table-from-csv--excel--json"},"Import table from CSV / Excel / JSON"),(0,i.kt)("h3",{id:"accessing-import-modal"},"Accessing import modal"),(0,i.kt)("p",null,"There are two ways to access import modal:"),(0,i.kt)("h4",{id:"1-from-the-base-dashboard"},"1. From the base dashboard"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"import data",src:a(1999).Z,width:"2878",height:"1208"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"import from dashboard",src:a(45104).Z,width:"2880",height:"1800"})),(0,i.kt)("h4",{id:"2-from-the-base-context-menu"},"2. From the base context menu"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"import from sidebar",src:a(30547).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"importing-file"},"Importing file"),(0,i.kt)("p",null,"There are two ways to upload source file:"),(0,i.kt)("h4",{id:"1-upload-from-local-directory"},"1. Upload from local directory"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Upload")," tab from the Quick import modal."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"file upload")," button or drag and drop file to the modal."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#advance-settings"},"Advance Settings")," (optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button.\n",(0,i.kt)("img",{alt:"image",src:a(44494).Z,width:"2876",height:"1796"}))),(0,i.kt)("h4",{id:"2-upload-from-url"},"2. Upload from URL"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"URL")," tab from the Quick import modal."),(0,i.kt)("li",{parentName:"ol"},"Paste the URL of the file."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#advance-settings"},"Advance Settings")," (optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button.\n",(0,i.kt)("img",{alt:"image",src:a(91503).Z,width:"2874",height:"1798"}))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"Multiple files can be imported at once."),(0,i.kt)("li",{parentName:"ul"},"Supported file formats: CSV, Excel, JSON"),(0,i.kt)("li",{parentName:"ul"},"Maximum file size: 5 MB"))),(0,i.kt)("h3",{id:"import-configurations"},"Import configurations"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"Table name")," - defaults to the name of the file; double click to edit (Optional)."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"Field configurations")," (Optional)",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Field name")," - name of the field as identified from import file header; click to edit."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Field type")," - inferred from the data in the field; click to edit."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Options")," - For ",(0,i.kt)("inlineCode",{parentName:"li"},"Single select")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"Multi select")," field types, options identified are listed here; click to edit."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("inlineCode",{parentName:"li"},"Remove field")," - Click on delete icon to exclude a field in source file from being imported (Optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button to start importing the file.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(91921).Z,width:"2876",height:"1796"})),(0,i.kt)("h3",{id:"advanced-settings"},"Advanced Settings"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Number of Records for Datatype Inference"),": Default value is set to 500 records."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Automatic Field Type Detection"),': Enabled by default. If selected, the system will automatically detect field types. Otherwise, all fields will default to "SingleLineText."'),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Utilize First Records as Headers"),": Enabled by default. If selected, the first record in the spreadsheet will be treated as the header record and its contents will be used as field names."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"Import Data"),": Enabled by default. If selected, all data will be imported; otherwise, only the table will be created.")),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"By default, the first field will be chosen as Display Value and cannot be deleted.")),(0,i.kt)("h2",{id:"related-articles"},"Related articles"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/create-table"},"Create a new table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/import-data-into-existing-table"},"Import data from Csv/Xlsx into existing table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#rename-table"},"Rename a table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#duplicate-table"},"Duplicate a table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#delete-table"},"Delete a table"))))}d.isMDXComponent=!0},1999:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/base-import-from-dashboard-1-0ccc1e3e8508c11049dd45647d6c0f91.png"},91503:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/import-csv-url-f9d895566bcab33720fd7272125e1a37.png"},44494:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/import-csv-515b6519a0b425cfa1672cd51ec465d6.png"},91921:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/import-stage-2-9b0b9c7805b194f2dbe8017eae3c5d80.png"},45104:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/table-import-from-dashboard-625bb54d990e6d7a01ffd6bf9c7e8aa9.png"},30547:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/table-import-from-sidebar-53e3a9f2cefcbc24681b88541f56dab5.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/71540999.772ad50f.js b/packages/noco-docs/dist/assets/js/71540999.772ad50f.js new file mode 100644 index 0000000000..3c041a0197 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/71540999.772ad50f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8954],{3905:(e,A,t)=>{t.d(A,{Zo:()=>C,kt:()=>u});var r=t(67294);function g(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function i(e,A){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);A&&(r=r.filter((function(A){return Object.getOwnPropertyDescriptor(e,A).enumerable}))),t.push.apply(t,r)}return t}function n(e){for(var A=1;A=0||(g[t]=e[t]);return g}(e,A);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(g[t]=e[t])}return g}var a=r.createContext({}),o=function(e){var A=r.useContext(a),t=A;return e&&(t="function"==typeof e?e(A):n(n({},A),e)),t},C=function(e){var A=o(e.components);return r.createElement(a.Provider,{value:A},e.children)},E="mdxType",c={inlineCode:"code",wrapper:function(e){var A=e.children;return r.createElement(r.Fragment,{},A)}},l=r.forwardRef((function(e,A){var t=e.components,g=e.mdxType,i=e.originalType,a=e.parentName,C=I(e,["components","mdxType","originalType","parentName"]),E=o(t),l=g,u=E["".concat(a,".").concat(l)]||E[l]||c[l]||i;return t?r.createElement(u,n(n({ref:A},C),{},{components:t})):r.createElement(u,n({ref:A},C))}));function u(e,A){var t=arguments,g=A&&A.mdxType;if("string"==typeof e||g){var i=t.length,n=new Array(i);n[0]=l;var I={};for(var a in A)hasOwnProperty.call(A,a)&&(I[a]=A[a]);I.originalType=e,I[E]="string"==typeof e?e:g,n[1]=I;for(var o=2;o{t.r(A),t.d(A,{assets:()=>a,contentTitle:()=>n,default:()=>c,frontMatter:()=>i,metadata:()=>I,toc:()=>o});var r=t(87462),g=(t(67294),t(3905));const i={title:"Architecture Overview",description:"Simple overview of NocoDB architecture",hide_table_of_contents:!0},n=void 0,I={unversionedId:"engineering/architecture",id:"version-0.109.7/engineering/architecture",title:"Architecture Overview",description:"Simple overview of NocoDB architecture",source:"@site/versioned_docs/version-0.109.7/050.engineering/010.architecture.md",sourceDirName:"050.engineering",slug:"/engineering/architecture",permalink:"/0.109.7/engineering/architecture",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/010.architecture.md",tags:[],version:"0.109.7",sidebarPosition:10,frontMatter:{title:"Architecture Overview",description:"Simple overview of NocoDB architecture",hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Upload via API",permalink:"/0.109.7/developer-resources/upload-via-api"},next:{title:"Repository structure",permalink:"/0.109.7/engineering/repository-structure"}},a={},o=[],C={toc:o},E="wrapper";function c(e){let{components:A,...i}=e;return(0,g.kt)(E,(0,r.Z)({},C,i,{components:A,mdxType:"MDXLayout"}),(0,g.kt)("p",null,"By default, if ",(0,g.kt)("inlineCode",{parentName:"p"},"NC_DB")," is not specified, then SQLite will be used to store your meta data. We suggest users to separate the meta data and user data in different databases."),(0,g.kt)("p",null,(0,g.kt)("img",{alt:"image",src:t(19883).Z,width:"528",height:"615"})),(0,g.kt)("table",null,(0,g.kt)("thead",{parentName:"table"},(0,g.kt)("tr",{parentName:"thead"},(0,g.kt)("th",{parentName:"tr",align:null},"Project Type"),(0,g.kt)("th",{parentName:"tr",align:null},"Metadata stored in"),(0,g.kt)("th",{parentName:"tr",align:null},"Data stored in"))),(0,g.kt)("tbody",{parentName:"table"},(0,g.kt)("tr",{parentName:"tbody"},(0,g.kt)("td",{parentName:"tr",align:null},"Create new project"),(0,g.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,g.kt)("td",{parentName:"tr",align:null},"NC_DB")),(0,g.kt)("tr",{parentName:"tbody"},(0,g.kt)("td",{parentName:"tr",align:null},"Create new project with External Database"),(0,g.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,g.kt)("td",{parentName:"tr",align:null},"External Database")),(0,g.kt)("tr",{parentName:"tbody"},(0,g.kt)("td",{parentName:"tr",align:null},"Create new project from Excel"),(0,g.kt)("td",{parentName:"tr",align:null},"NC_DB"),(0,g.kt)("td",{parentName:"tr",align:null},"NC_DB")))))}c.isMDXComponent=!0},19883:(e,A,t)=>{t.d(A,{Z:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAAJnCAMAAADx+ZrCAAAC91BMVEUAAABERERCRERCRERDREUyl///gAD/gABNTU1NTU1NTU1XYWxOTk5MTExNTU1MTExMTExNTU2AgIBNTU2AgIFBQUFNTU1NTU1UVFRNTU2AgIBMTExMTExNTU1NTU1MTExMTExLS0xKSkpLTExNTU1MTExNTU2AgIBMTExNTU0AAABOTk+AgICAgICAgIBLS0sAAACAgIBMTEyAgID/gAAAAACAgICAgIAAAACAgICAgICAgICAgIAzmf9MTEz/gABNTU2BgYH9gAMJgMEAAAD/gQEzmf8ymf+AgICAgIAzmP8bgdX/gAAymf//gAAAAACAgIAzmf8ymf8AAAAymf8AAAAAAACAgID/gABLS0v/gAABcLI0mv//gQFNTU00mf+AgID/gAAzmv+AgIAAAAD/gQD/gAD/gAD/gQAzmf8zmf+AgID/gAAymP//gQIAAAA0mv81mv8CcrIAAAAzmf8AbrAymf//gAD/gAAAAAD/fwAAbrAAAABDQ0X/fwD/gABDREUDcbMAb7Azmf8zmf8tlv9DREVDREWBgYGAgICAgIADcrMAcLFYjcFVjsgYGBn///8boeJDREX/gAAzmf9NTU2AgIAAbq//wICZzP8AAAD/mjT/v3/5/f//jBfW7P3x+f//jx54vP//o0ez2f//uXP/r1+93v9drv//5sz/y5b/nTr/lCeRyP//iA/M5v+g0P//9+3/tGf/qlT/hAir1f9Wq///4MD/27f/vHnE4v9zuf9IpP/q9v7/8uT/1av/0aL9/v/s9v+Mxv9ksv///Pn/zp3/xYr/woX/t23/oED/rFjk8v9Op///7Nn/p07C5/j/6dP/48aAwP9ptP9Dof//2LH/ly71+/+l0v89nv/c7/7/yJDg8P+HxP//9Om32/84m///795ttv//+fM3reb/06bS6f+Wy/9owexJtOiHzvEYm9xzxe3/3bvO6/levetTuOme1/Oo3PUhpOO04Pa74/YsqOWAy+8boOESkdIPi8x4yO5LJRe/AAAAkHRSTlMAQH+Av4A0gPvh6wMNtqho8sv6kg4TPx0H2/ZNJ/e/rtJxLV2FUzrs5oqcI4gYrDTEtZtysYvXzHQj8+HBvoFuRTa+8+vMsUhHPi0SoaBJQC6Vhl86C7OklHl47+zd1s1WVlRPKR0Sh/V6cF1AHuo2993c1qZuamZhUCspHuYlCtPFiGRhCaCNfWuPw4n44kKWY0T9AAAfcUlEQVR42uzdv4vacBjH8Ux26L/jfnBw23FzObjhhvY6HF1bOrT/wgOfRYgEQkggMQSMgcRFsyTGCIoOugiCiOP9DTW2nuau7fXHGb5pn9fcrW/U7zd57pFYsd68/li5uP5wcnn5/vritvLpzWeJ/Vc+XWz+929enVdPz67evcV3vLs6O62en796cfL++vaNxP5Vb25PXp09TMBRbVlrGf227g5G6cxWPORdVW+uP0rsn/Ly4/VN9R22VM1w28k8nN5Nhp0VPRY1l+NJsI57tU0j8rc+zs4vL15LrPxeX1yen2HLa7hzf0G/aditt2xsvTt99b7CvzFKrPLiWwt2q9Yd0p9bTeJ+qmCr+oF/V5TS7c0VACftx5MVPYtO0DNkbJye8NdHyXy+zGpQ3YCeW8fStk1cSKw03rx4C9i6T8fRDFsecHotsVJ4c/MW0AL6PfvDxTzuBpPxshn97F/3FOCMkyiDyhUwuvuFAsxuPE/a2fWDnF0/POYptpyOBq6ebBoxH/YxV4FXEhPd9VukPv3ccpoMZsjzHHXW0FquXteNltaYqY6HvNkgmS7pgAVU+cQhuBPAoB9r+pbbcHZnUaNf71nrqW8OFyt6bLUYmv40tHr1vrG7i3BS1/Kb9JWv4oxvMYX2CajT943X7ZGKLUXTYzOi3xOZsa4p2FJH7fU4+6hpoCoxgb34wedD4CrIeLIxv1vQn1vczQ3ZQ0ZxA1oAfCUhsisE9FDUNRwA9qj+57eVj++zRzYAx2jgUmLCOoFDD4wND4BcM+m5mTUZG2/5V4S4boEFHTINAI3ekI5j2GsAOK9ITEwVwKK9SQuAO6RjGrqchLgqgHd3eE+A/pKObdkH8F5iAqpAgWrSV3VA71AROjrwQmLiqUAewEsi2jCAORVlDpxLTDibIMhS0JgSWfCmVJypx98aAsqCoKEByImMkIoU4kxiosmC2AgGABwqlgM+aggnC2LLVCFTsWScSkww90GQAYWK5fDPSvHsg2gDJhVpwidPAe2DqAPygorTbHAQAjoMwobWpKI0R7A5CPEcBqHPYIdUjNDGTOcgxHMYRK2pAwOTjs8cAHqzxkGIJxcEUdAAtLhJx9SMNSANiDgIAeWD2AhTQOlPIzqOaNpXgDQk4iCE9CCI+1tLxQg79Nw6oaEAGAREHISgHgWRMesyAE9rr4f0XJbdtuYBSBOTiIMQVj6IvXEiI6OOakGT/s7K7w1sZFIrK4yDEFg+iJzOuq0pyNiGNVlG9Pui5cQyZsgoWnud3XtxEGLLB/FYJ0gGuxEsOx30kzgwF/RzCzOIk/4gtXcDX4Mk6FCGgxDeU0FsRRNLbzXUw7FORZ3JDW3UMtx+u97uu0ZrpDXkmaocDniqjZZuTSLKcBDlkA/iCZ1Jd54rIyfXwbw76dA3HESJvIfzKIinRc3OcmxO7qbd0Jr36r25FXandxNzvOw0I9rhIEqoAoz3QTwLDqLMKkCdg2CHQcDiINg+CBWIOQi2P2XUgZbJQbBdEDS24dXGHATb3UNEfQA2B8HuL6Z8VwEHwQ5uKhd28YM6/PfHxLO/unbhUbE8/jOm4snNZXSpSF2eyxBQLgjHp+JMHA5CQIdBzKDeUVHubGgchHhyj79HgL6gIix0QONThoByQdAUsK3jJ7GwbCDhY6eI8kHQUAMcN6BjClwHSH2+hxBSPoiNbguA3PbpOPy2DKDV5YspQeWD2BrXZwBst9uk59XsujYAuz7mm0ph5YPYCfSsCafRj8f0PMahnjoAZnrAV9ciyweR/2zfzVNMO/Q3FkFtpABfv4n4WYbg8kHkDbu7SR21lYT+MvrtMR0/TAYqMsqo3l3ywy3xPfka/jjuNzx8pcitfm896Tz5tv6612/JCr7yUn095KedJfFkEFtm/MeDOvGYH3+XyT6I2rMO6vR4UKecfieIvdV2UMd/MKjjbwd1VvyCTJkdBMFvTDEOgj1wAoWDYPklbBwEyy1h4yBYfgkbB8HyS9g4CLY/ZaRwEg6C7Y+dIdCYchBsFwSZKSCnHATbXUytejJ4tpMd3lQGClIqVspL2MTDS9jYj0f5Cl/CdiMxweyDqPESNpYPQi14CduMgxBP7vE3Cl3CBj5lCCgXBPWLWsLWAjQ+doooHwR1lYKWsDk9vocQ0oMgaKyr2yVsKzqO1XYJm6qbfDElpnwQmVWsAVCM+AhL2GJDAaDFK76pFNWjIDJmrXG0JWyNGi9hE1k+iL1xT3u2JWxNvzdQkdF6Y36WIbZ8EDnDsJ8690vYOvQnOvdL2JxUD4f8cEt4T7yGH03mxux+IGugz6fmgp62MKdzfXA/4iX3YzPip52l8DiIx1b+fCAr2PHUVBsNDFdvJz0rXk8DP5iuY6uXtHXXGIy0VPWwo8iD+STix9/l8VQQe9HQDxN3NFPwNGU2cpPQH0b8PkTZ/GoQ+TKC7uFHQu4DoxtsOuAXZEqrghlPbrEDV/A5CLZ3A5eDYHsfgTkHwfZeADoHwfY+AK0hB8HuXbwDjDEHwXY+nQOYcRBsn8QrntxiOa/PoFOxdA5CZBUoVCwFFYmJ66zwrXxnEhPYCVSfiuOrOJGYwF5WgZCKEoL3+grvFZBEVIQoAa/1LYFLQElWdGyrRAEuJSa+i1PAqR95cqvuAKcXEiuFiyrgtcJjNdEMWx5Q5RxK5LaKDc06wuSWpWGjeiuxUnl9coqNhmv5TXoeTd9yG9g4PXktsS/s3bGKwjAYwPFMdejW8V7ARadm6lIodCudi9ChQ2sH6WpxsLtr4BuFIhSs4uJiluJW66Dc4r3A4egznC0ETrgbjpuq32/ICyT8kwwh7RPElDXSM7++/++Hxis/p6xB44CgtkpGumWGrPGRlbvi71vErhTPfELT0kcJQa039TrUZY35seKHfH+5LU/F5283yuK0vF32+YFXxzlruLTjTQl6Jok0doyIPdik69Vim1W8zEteZdvFap1u2IPIcMYSZuFp+bY+GDoWNUw3CtnPwsg1DWo5w4Fu4+nxlciBP5FsL76vEeM++7FnSxM/kAl6eeqbShASZA26BCFB1UDDRCBB7gJgItD3QAAmAgmypiigKBpBqNaDWR/6M+gRhGp9QqAeERKAoC926yAHQRiIwvAsaYOlDQG7KKkKJhAXJhzAe7DhVu++KsQFi7p0ge87w5+ZRwyCGAQxCGIQxCCIQdAHg6ANBkEbDII2fhSExpuRVXjUkgYltB+pIA4vhayu6BjEv0gFkS8lzFG6uVPQhS+tNV6im3Q+m2gPQYJrVOkZxL4kL0SMMfgeE5r7CX07wPaIogBUQNZgFAencWYQ+/JtQ9RSA2iXl2FxuWXIFcbKIztW0DJMwaBkEE/27CZHVSAKoPAdFgUWEAJI+BHQNhgHJL0A4zZ64q5Or/cF9eW1aey8QU8k95uQOz+Bou6yPAvimKapL9LgyRSEz9XRI5U1hQiRdAY0iKX58QwhPXCeghDDvs/Oaw9f1lymIHKiLNQgluZZEG0cx86/4IiCkrhv2Jyw/kMQXulpEEvz0xli6CgkJkkHknwFUSZfgpANNLQaxLJ8yv9IA5Gg8uVRHohaGr26VhqE0iCUBqF+JYgVQFvJ903nYEQt3kwQjWvh+H3TaRG1eDNBZCKORMqijrvKw4aBi+wmF0sSFZncp+N7VOxE9m19OUtwGKzTn9AlmA8iJF4bGsN52nTu8FpWYjGWWu5TgxvIUkMLVUcTsxP1+uaDyIjzZDsWlNMnI0yqjkIso8SM98lwegv3IS5POKxwZfcm6vU9e0MkvgNuQZwHuAYhcqK7Tweg6A9MNqWBSINYgtkg/IJyS9y7WxCWbX8NIhdHdpuCbHsq2Hzg+vFc7cuwIRL1+maCaJsIG4RstoayJO4t5eoahPeO8W/Tuq7DD1Yjddeybdi96ZJrEWaCANPkEgwQc0gHkg5aY1KLB53cp7CGSyXhAM4fC7D6yViCT3nquP676Qzyr/vN++SPqUyq6yPNRS2BXl0rDUJpEEqDUBqE0iCUBqH+0SDUAw1CPdAg/rBLxwIAAAAAg/ytd8+hGGKEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghCD27dg1jSgO4PhbOnULmfIPdCldOjsJERQHxU1BcEsgkASTJVOSduryhB8RBzk5Du6Ww1vuhtMMubvRm1SoBoOSwQz+A0mXetJAXwtt2uqzz/f7DPcXfO939+D9GBgEYmAQiIFBIAYGgRgYBGJgEIiBQSAGBoEYGARiYBCIgUEgBgaBGBgEYmAQiIFBIAYG8Tdepw6SuUTpcv/V/mUpkUsepF4TJFMQr5OlD/t72Ux5N1Y8KhzCzw4LR8XYbjmT3dv/UEpiH5sbxEFir1wE1qQfOsG92vVrfle9D5ywPwFWsbyXOCBoo4JI5U4zsQIsOGrXf7DssdtURl6d/qzujZSmO7ath3kjDiwUYpnTXIrIbTOCSJayu0ew0O75mlKnf6auaH6vDQtHu9lSkkhrA4JIZAoQmRjdgevRv+e5g64xgUghkyByEjyIj6V0VEPYetBHdDlG+kMrjJpIlz4S+QgdRDJ9CABGTaHLptQMADhMy/ftEDiIZBoAAmtEV2NkBQAgXRLCBpErA8DdiK7S6A4AyjkiE1GDuAQAv0NXreMDwCWRiKBBZAHMa8rDtQmQJfIQM4g0wIDyMgBIE2kIGcQpDHXKjz6BUyILIYMowpjypEGRyELEIJIwpFzdDEGa06eIQcTAoHwZECMSeL/znlwtnmIpw5DyNZTjt3J7a+fN1ZudrW0ilixAk/LkynLyfLt1dXW19ZYI5hVAq0H5abQAXhEZbO/MgxBuQMyDCMFQKC+KAY4kQcxHhIADYh6E6UBfp3zofXBMWYLY3hFwQMyDqDVMgJ52Q1ftRusBmI2aLEGQtwIOiCgISt0AwLE8ukqe5QAELqXyBLH9TrwBsQhiLnp5+6q2qiY8Te1HY4hSQYNInZznqzzkz09ShD82iAVXBYBhy+7QZevYrSEAqC6logZxUY0/zR4rq/c4e4pXLwhvbBDsVTfomePR8mLQzR7MBdHVPFGDODuOzyr8zOLHZ4Q7Nohnt5YBkbBVcxv03zSaAzWESGBHhQkbxFn+S4WvL3neRbBBMLyxed+GiNO1p53P9M997kztrgOR9r059iilIgdxzKUHtohjwh8bBMtzrecVrGEYqL6luYpHf81TXM3y1SAcPi98Wa5HI2IHcRGv8Be/IOvBBsGqT21fNdrfr3W2Q8cIei21e+ebNdO/66qtXmA4Yfv7Bc+2ofr2tE4j4geRqs4q/M2qKcITG8RvXE/1AVMGg+lgoE+v6TcbEsRJvLIO8RPCExvES9UbXudWaTZdXbMHVs0a2JruNpvKbcdr1OmzDQvi/KmyDk+fCE9sEEuxqUHkZ5V1mOXJC2EQfFUfK+vwWCUvhEHwVa2sBwbxn8IgfoBBvAgGgUEwMAgMgoFBYBCMjQkCF3UwCEYaJpSvr+ydu4sTURSHp7GyCylk/gGbdUEExVexCKLYKAgWFgp22glWVnarqPwuXFZSDDNIYLYZkkYLkykmmzKBgLswu0NClhDcJIa8Hz4KZ2aT3c34jG7GzMz9muXeamE+7uPcc3IovcF5iKAJcYRSGW4S9VhdRgCFyMbgHrEsE2LOhXhLt6NwizfbtMSEmG8hIglKIxm4QSZCaYndMuZdCMiUbhU+YNZ8KGxRGmfXzvkXAvmSnSavYXZodpp/OubPOATQJkREhfwQDSbGgFRhoVbnXwhAtj5XtiDrmAW6XMhaysl+DUwBwuBXQoiGAN0UQhMNHYYXhACMiJVVm3xflHC4SMX3SSvnNmL4N1IJoG8LUZcg9AipqpraIeORBkK6AoZVqIQ0IXlDCJN3iuXEVnotKuJwMKJr6S3LBuWdr0PXECSUTSGqgAR0ugJ0oDYa2UIQEb0qhIaoo+cZIUxiO6vUYmNdkVP4F1LvIokktVjdifn9LQNCBaIpRA45Uodeh0qGqc5otCtEH/0qbNpeEsIkLyulDWqRfR0vxjJTN1DJxIrxUc1WMrEjZwLwuAWB5CGhkseQdIG2aYLJaLQrhIGvVUiDcg3oekuI0VpfWN3ey69PrG0WP6i/zdYvbq4l9rL1t9NmjWhQXjsh2FeISgMd0rKXC9LMDUcjW4gqMLDPEGWg7EEhbMR/KNQxfvf8vXT6KjfPnApPJwRpAJWv0HI6GkRDT8Jwf5RRgbx1y8hkBOge2zJcKdRZWuRDS9w8w4cWwlMJUQYqpA9ALZM2AJGMRxoAodEdxyFaXhfi8At1lk7yKysnubnmKR8ylZg6Ujlolh1/9vFOpNJVIvSl/YN9yw/2uHuAewe44uDqJEsTXJ/k7Pec+I7wJMfGHDU5bv6P/EI4kKFrV4nQF7YQi7cOsujg5HdcOHnByZnvOe3k/OnzTo47ODeCtwjxoV1WLEKLTIhZY24ZT4/zK/wzbr4xV4hz/DJbIWaOfai0lDjBzTOn+HPnlqc8Q5RbTIi/E8I+tC1zc8zREL98bLrn73oKEPpMCJ+m4Z86Nm0+hI5cT0ONCeFPIaZOkGlBJ6SWaZOKpElfSV3qqTkpRUhDau7P9JkQgRGiCwi5YZeUAQlo1QDkJDS70A7OMCECIwQZCgCEVhtiNYdcDUKddNCro3Fghm0ZARKCkGZPRyMHC6OGBiFlqDnU92fYGSJAQlQEw1QCQgdis1Jv1eztIQVdIPszHhDiIk3DXdI+re0sA2pfR78JrSOhvfv520CDjGa8IQRrwnZoW8ZXFRDEAWkLgNi1Pv/oCXQ04w0hWBO2QzxDDFrEplUmk5gz3olDsCZsrFBnQogka8LGhJi4ZVBXm7BRv94y/CME1lxswrbu22unj4SAvOFSE7atuH/jEH4SAoaSdaEJW1YRfRyY8pUQgB4tzbgJWymq+zpS6TMhTMRImjVhY0I4mrCtz6AJ23rcCMBbhi+FMMnbBdvjJmwq/gZ1rwnb1roSzQfjccuvQlho4w9qkky/VjZlMYXfkxLlTeV1Okl3WS1ERS04r51+FsJGMJf81Q06ZjubLllFncpOxKzYKsrvzAKuolnBFdlRrBLPUjq7TcdsrL7e/CAE7Pnb90LsFfdH44WEacZvMT1IFOLRWEbwVT4E66jzMzMcS4JzwcgIvkyQYT23fkJQM6ZYVz4HQReC9e10EHQhWGdfB0EXgvX+dhB4IbiHX4jbfHnI/TFMCLd5fNttI77cfsz9MUwI13n88JKb54iPlx5O4wMT4j/w/NWlzx/diFB9+vj50qvn3DQwIf4H1x49uf3KDW4/eeT2/cIphAJ3UbwoxF8RXgxznuMmTcJdkvQmFwwWQguc97hDZbiJTO9wwSDMr4Q8uETcp0lXu/Il6X0uGCyEVry4RBy9TGkUbhGl9DIXDL6xd8eqCkJxHMfPcqe2y516gR6g2fUcKBoMxyBoMxB08QWy3eGP0BDXoaEldNEhc6q1SQUxksTh+hj3ZFPQcqku6PEz+ARffshZ/nQgjEpOBOIB7KX+H5Z2xc76PjkQRiUnAiERIFrE+rvFiwhARIz4+mx3jE67khOBCAeQFKb+TmaRAHAEsaLb7iKj/FYSwQCZt3pXE+bKywAwOzncGKjCBAxU7vj6q/lODhRm5fmhJkEgJKkcUIfUscxXLYPlpAegOFVC7Kl4EFRfw1A65pvLSX/G6bLJj1DCWh8xqfpBUHMyHYxluMrcwN76+l/5WztwM7iSx4MpmSNW1SKIm97kAytQisK0sOkxJevn7Mf6Y7F//rbo4SW7SMMISgr+mPQQ22oURGkuzHhuBHeSnbsOvWBPG7GLfeCFa3eXwJ0Rx88EdmehxkHcSEQVh/wAc2NlJMNj8kgZc3jAD0WVsPj3yFQQd1p9qSeQiTaljQzFqTYhQk/qt1CD0SAaTRCNJojGL7t0TAAAAIAwyP6pvdcBMiAEmxCEEIQQhBCEEIQQhBCEEIQQhBCEEIQQhBCEEGfXXnYUBcIwDH/LKs6EABo5iTaRsDDxAoy30Zu5q/d+Jyi23emZzWwmNLwLkyp/a+MTJeg/5OVaWzwIQygFdGp/gen1rARM7SkEKION1pYCIvJGEF5EXBv6F4igPmEVYgO/JNTaUkBwHEFcaaSC6AVCck/sQo7SnkRrCwERNSYP6Hyuklz3MwgFXEO2lyCi09pSQHQEAV3DTlMvED3HkDGzglgOCPlsn58QbfsFRM0tJPHShFhriwExwP0awlVH8xlEbvBCjtIbVmuLAaELdKkh8uH2AlHFBl8hp6oy60XlokCkhk6dAyRf7kNEl83zPoSntWWA+FR+9qQhu7cCWEE82vX31rvYK4i1FcTackB4g6v/kTss4/JjdiBqZwKR0OlLFZzlgdWXimsmfc0HaIo/TJyM/tImCrSE5gYi46pHlz+A2Ov2DcQbx+8gqqCB4fuEg/5Wv4zfPeYGoiLXblvG+xHEEMdDEZc22TyeMr6OBqtpL/PL+K2wOOEmiaJgozp+d7w7iEwKSB4n3Se8IHLqXA5JtM00rYZLtD1KXVP+uqnA1wKaG4hoq42hMhQXdpa9YmKH/QNEHCmOsdPepiyD0rQNp0NPdKKWBT5AhMSPk27jxBHb4MvBOJSaVhXBiSw1NFDIOlpAMwORUylPDuctuwsRidS/FwHJA0RPbnrstNcShYcwH78QItrB4FkuqZ4gMuLppHEiTIo9WzmcFXOeVobrW9iFBHlCr4pUP7+ZgbgRyA2AEQQjhL2BJ4gdR3bY514M+N4bR5d7gyXVB4iQZDppBHE7wR2EdGU/rfrxse0Zq1WT6ec3MxBnYh2I22AE4cOQE2XhE8RgDCl22stvhyQiHN9uQ9dmt43F/QDhbtlNJ40TDof2DiJXQPZYednhuqV+J2jPt0IxrX5+MwOR4iikPpgRRNdT5did/QARY13stNeyPdSEO+K2or7iuC8QTRXheNNJ44TDzr+DsBeM+1htyjJ8xz9T7hsOiljCnYiZgVDDxjtBTH+h80qyGiqaCURP4GI17V2Ayk1PJLkPUaYXCDBVrumkcWIPjTGpg4W9plVYwq9C4QkC11vGn2nmBiLkIA0bvco9TX3b8873wdSTvMLV98aTpgkv//zaaeWeU40VqXTgoAU0NxCutfo/2a2W0NxAqNh7+h95+0FLaHYg1r60glj7zS4dCwAAAAAM8rfePYdiaIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYIRghGCEYISIfbtZURyIwjBc+VlOI4jNDLYgHdFejIzQfTV9MYGsdH8WXu8kDgn5XAypwTDU6fdZiNT65aSOEgiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgoAgCAiCgCAICIKAIAgIgsB8PtYf4Xr7BFqr5frt+rZergLQOS6v1+vyGICb1boNggGB0YhgQEBGBAMCY0cGBMZWvxgQruXzC0hIaXMrAxJCELgPopgTQSSmDSIL88kIIjEEgRmCuJRFuNlv37PhiCAS9JAgtmZ2vvVgrWo4Ioj0PCKIzDo/+53lPBxtCCI5jwvi1AfxNBxVBJGcRwRxslYTWrm19u2XqrE2BR4Z6XnIHaIqrTyETl43RX/0xKUyQaydIAj8PYgZEURq+HMLBAGCAJdKEAQIAgSBEYKAIAgIgoAgCAiCgCAICIKA+F9BHC77Z4L4AiZPiNqszDOC8G5yEGfr1E+vFUF4NjmIhfXq8+47QXg1OYiNjTWX/TeC8Gj6ltHYnTInCH+mB/Fud3ImhEPTg9iZKnhkeDQ9iGcTOZdKl6YHEUrpgS3Dp4ggLuMeWDudigjihQnxBUQE8cPGPgnCpYggQqlFEIRHMUF8mnglCIdigjhZJ8+HIgjCn5ggQv3nNln0RSwIwp2oILa3HsZFEIQ3UUEs+m0zH4ogCGeigth0PWgRO4LwRYKYSIsgCFckiBjFUARBeCJB/FMRe4LwRIOIL6J+4ZHhigQRf4+oMy6VvkgQsYrmwNrpjAQRreKHKW94txMEAYIAQYAgQBAgCIwQBARBQBAEfrN3hzYAwDAQA6t2/50bGhD4INLdDOZuBEFUBfGSBLGMxRKCYHbzDgAAAAAAAADw26tDGwliIIiizRePdDE0atJSB2BuYNkRmBsMsjQ5HP/R3u3qyIWws/1AScVLqpRSSiml9L4U4GyS0osyXOGSlJ6U9YzazX1IO7EqYeuwIdv25cVCZI5iVZq130z3pqgrpXfANhjMRlQ4lKn4yToKA6YDOYi7U57s6NAeRpXAJxpQzyKFqG01/ArCGfkst6fUfg2ic4oUvmQxpJyqJVAJwGbwpM6WdHfKEnG8YyLGlIaLUmIUdl87DG34nOvyPIwPoAwdUF+DCCwKVTasgOOrlBbopLTBzkF8AgU4QzpDpCvgIgf0iom0AnZJO8EfzrekD3PM/q8//vp1SEoppZRSSu/sB++2H4HfKCBFAAAAAElFTkSuQmCC"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/71f80183.484d6afc.js b/packages/noco-docs/dist/assets/js/71f80183.484d6afc.js new file mode 100644 index 0000000000..8c0cb3c5ae --- /dev/null +++ b/packages/noco-docs/dist/assets/js/71f80183.484d6afc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[924],{5068:t=>{t.exports=JSON.parse('{"label":"Shortcuts","permalink":"/tags/shortcuts","allTagsPath":"/tags","count":2,"items":[{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","permalink":"/records/actions-on-record"},{"id":"getting-started/keyboard-shortcuts","title":"Keyboard shortcuts","description":"Quick Actions","permalink":"/getting-started/keyboard-shortcuts"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/775b7682.558cd548.js b/packages/noco-docs/dist/assets/js/775b7682.558cd548.js new file mode 100644 index 0000000000..0dd4794599 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/775b7682.558cd548.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[949],{32263:a=>{a.exports=JSON.parse('{"label":"UI ACL","permalink":"/tags/ui-acl","allTagsPath":"/tags","count":1,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/78ec2f26.dd1ac6e9.js b/packages/noco-docs/dist/assets/js/78ec2f26.dd1ac6e9.js new file mode 100644 index 0000000000..2e932e2aeb --- /dev/null +++ b/packages/noco-docs/dist/assets/js/78ec2f26.dd1ac6e9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2673],{44413:a=>{a.exports=JSON.parse('{"label":"Relations","permalink":"/tags/relations","allTagsPath":"/tags","count":2,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"},{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7a733070.20b3d10c.js b/packages/noco-docs/dist/assets/js/7a733070.20b3d10c.js new file mode 100644 index 0000000000..0ed82011c9 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7a733070.20b3d10c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4223],{46864:e=>{e.exports=JSON.parse('{"label":"Share","permalink":"/tags/share","allTagsPath":"/tags","count":5,"items":[{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"bases/share-base","title":"Share base","description":"Procedures to share a base & generating embedded iframe","permalink":"/bases/share-base"},{"id":"collaboration/share-base","title":"Share base","description":"Procedures to share a base publicly & generating embedded iframe","permalink":"/collaboration/share-base"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7c4b6d90.1548a3a9.js b/packages/noco-docs/dist/assets/js/7c4b6d90.1548a3a9.js new file mode 100644 index 0000000000..00b4f31040 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7c4b6d90.1548a3a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5580],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=c(n),g=i,m=u["".concat(s,".").concat(g)]||u[g]||p[g]||a;return n?r.createElement(m,l(l({ref:t},d),{},{components:n})):r.createElement(m,l({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,l=new Array(a);l[0]=g;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>c});var r=n(87462),i=(n(67294),n(3905));const a={title:"Writing docs",description:"Overview to writing docs",tags:["Engineering"]},l=void 0,o={unversionedId:"engineering/writing-docs",id:"engineering/writing-docs",title:"Writing docs",description:"Overview to writing docs",source:"@site/docs/150.engineering/080.writing-docs.md",sourceDirName:"150.engineering",slug:"/engineering/writing-docs",permalink:"/engineering/writing-docs",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/080.writing-docs.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:80,frontMatter:{title:"Writing docs",description:"Overview to writing docs",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"i18n translation",permalink:"/engineering/translation"},next:{title:"FAQs",permalink:"/FAQs"}},s={},c=[{value:"Folder Structure",id:"folder-structure",level:2},{value:"File Structure",id:"file-structure",level:2},{value:"Nomenclature",id:"nomenclature",level:2},{value:"Tags",id:"tags",level:2},{value:"Active Tags",id:"active-tags",level:3},{value:"Description",id:"description",level:2},{value:"Images",id:"images",level:2},{value:"Before you commit",id:"before-you-commit",level:2}],d={toc:c},u="wrapper";function p(e){let{components:t,...a}=e;return(0,i.kt)(u,(0,r.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"This article discusses some of the protocol and conventions to be followed while writing docs."),(0,i.kt)("h2",{id:"folder-structure"},"Folder Structure"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Docs follow object-oriented approach. Each folder represents an object and each file represents procedures associated with that object."),(0,i.kt)("li",{parentName:"ul"},"Each folder contains an ",(0,i.kt)("inlineCode",{parentName:"li"},"_category_.json")," file which contains the metadata for that object.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'{\n "label": "Engineering",\n "collapsible": true,\n "collapsed": true\n}\n')),(0,i.kt)("h2",{id:"file-structure"},"File Structure"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Add following metadata to the top of each file.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"---\ntitle: \"Writing docs\"\ndescription: \"Overview to writing docs\"\ntags: ['Engineering']\nkeywords: ['Engineering', Writing docs', 'Docs conventions']\n---\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"title")," is the title of the article that appears on the sidebar and on the top of the article."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"description")," is the description of the article that appears in search results."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"tags")," are the tags associated with the article. Tags are used to group articles together. For example, all articles with the tag ",(0,i.kt)("inlineCode",{parentName:"li"},"Workspaces")," will be grouped together."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"keywords")," are the keywords associated with the article. Keywords are used to improve search results. For example, if the user searches for ",(0,i.kt)("inlineCode",{parentName:"li"},"Create workspace"),", then the article with the keyword ",(0,i.kt)("inlineCode",{parentName:"li"},"Create workspace")," will be displayed in the search results.")),(0,i.kt)("h2",{id:"nomenclature"},"Nomenclature"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Folder names & file name are ",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"in kebab-case."),(0,i.kt)("li",{parentName:"ul"},"prefix with a number that represents the order in which the folder/file should be displayed in the sidebar."),(0,i.kt)("li",{parentName:"ul"},"prefix number is always a 3-digit number. "),(0,i.kt)("li",{parentName:"ul"},"For example, ",(0,i.kt)("inlineCode",{parentName:"li"},"010.account-settings"),"."))),(0,i.kt)("li",{parentName:"ul"},"Only first letter of the folder/file name is capitalized. Second letter onwards, first letter is capitalized only if it is a proper noun.")),(0,i.kt)("h2",{id:"tags"},"Tags"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"First letter of each tag is capitalized."),(0,i.kt)("li",{parentName:"ul"},"Tags usually are Objects or Actions. Add a tag only if we are sure that the tag will be used in multiple places. Example: 'Create' - we can have ",(0,i.kt)("inlineCode",{parentName:"li"},"Create project"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"Create user"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"Create API token")," etc.")),(0,i.kt)("h3",{id:"active-tags"},"Active Tags"),(0,i.kt)("p",null,"Tags that are currently being used in the docs are listed below. See if you can reuse any of these tags before adding a new tag."),(0,i.kt)("h2",{id:"description"},"Description"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Description should be crisp and to the point. Preferably one line."),(0,i.kt)("li",{parentName:"ul"},"Refer to the description associated with the tag to get an idea of how the description should be."),(0,i.kt)("li",{parentName:"ul"},"Descriptions appear in the search results (when searched by tags). So, it should be descriptive enough to give the user an idea of what the article is about.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Search by tags",src:n(57124).Z,width:"2850",height:"1796"})),(0,i.kt)("h2",{id:"images"},"Images"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Annotated images should be placed in ",(0,i.kt)("inlineCode",{parentName:"li"},"img/v2")," folder."),(0,i.kt)("li",{parentName:"ul"},"For every annotated image, there should be a corresponding unannotated image in the ",(0,i.kt)("inlineCode",{parentName:"li"},"img/v2-unannotated")," folder."),(0,i.kt)("li",{parentName:"ul"},"Images are kept in the same folder structure as the docs."),(0,i.kt)("li",{parentName:"ul"},"Use ",(0,i.kt)("inlineCode",{parentName:"li"},"Skitch")," for annotations.")),(0,i.kt)("h2",{id:"before-you-commit"},"Before you commit"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Use ",(0,i.kt)("inlineCode",{parentName:"li"},"npm run build")," to build the docs."),(0,i.kt)("li",{parentName:"ul"},"Ensure that the build is successful & there are no errors/warnings related to missing links, images, etc.")))}p.isMDXComponent=!0},57124:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/engineering-search-by-tags-9453d5cf2d1534c2f812c7aee697fe43.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7ce1d842.df84ce1d.js b/packages/noco-docs/dist/assets/js/7ce1d842.df84ce1d.js new file mode 100644 index 0000000000..62d6599cd2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7ce1d842.df84ce1d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3998],{3905:(e,t,a)=>{a.d(t,{Zo:()=>b,kt:()=>m});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},b=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,b=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,m=p["".concat(s,".").concat(d)]||p[d]||u[d]||o;return a?r.createElement(m,l(l({ref:t},b),{},{components:a})):r.createElement(m,l({ref:t},b))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[p]="string"==typeof e?e:n,l[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=a(87462),n=(a(67294),a(3905));const o={title:"Table overview",description:"Learn how to create, import, and manage tables in NocoDB.",tags:["Tables","Overview"],keywords:["NocoDB table","table overview"]},l=void 0,i={unversionedId:"tables/table-overview",id:"tables/table-overview",title:"Table overview",description:"Learn how to create, import, and manage tables in NocoDB.",source:"@site/docs/050.tables/010.table-overview.md",sourceDirName:"050.tables",slug:"/tables/table-overview",permalink:"/tables/table-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/050.tables/010.table-overview.md",tags:[{label:"Tables",permalink:"/tags/tables"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Table overview",description:"Learn how to create, import, and manage tables in NocoDB.",tags:["Tables","Overview"],keywords:["NocoDB table","table overview"]},sidebar:"tutorialSidebar",previous:{title:"Actions on base",permalink:"/bases/actions-on-base"},next:{title:"Create empty table",permalink:"/tables/create-table"}},s={},c=[{value:"Related articles",id:"related-articles",level:2}],b={toc:c},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,r.Z)({},b,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"A base is housed in tables, where data is logically arranged into records and fields. A table in NocoDB serves as a robust center for managing your data effectively. You have the flexibility to create multiple tables, each catering to distinct sets of data. Moreover, you can link tables to one another to establish relationships between them."),(0,n.kt)("p",null,"Much like traditional spreadsheets, NocoDB tables empower you to carry out tasks such as sorting, filtering, and aggregating your data. What sets NocoDB apart from standard spreadsheets is its ability to present table data in various formats. You can view your data as a conventional grid with records and fields, a gallery of cards, or even as interactive kanban boards, and then make use of a friendly form to input data."),(0,n.kt)("p",null,"As you delve into this section, you'll gain a deeper understanding of how to leverage NocoDB's tables effectively, equipping you to proficiently organize your own dataset."),(0,n.kt)("h2",{id:"related-articles"},"Related articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/create-table"},"Create a new table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/create-table-via-import"},"Create a table using a CSV, Excel or a JSON")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/import-data-into-existing-table"},"Import data from Csv/Xlsx into existing table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#rename-table"},"Rename a table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#duplicate-table"},"Duplicate a table")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/tables/actions-on-table#delete-table"},"Delete a table"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7d5d7de6.b3fd985c.js b/packages/noco-docs/dist/assets/js/7d5d7de6.b3fd985c.js new file mode 100644 index 0000000000..cc74c1d664 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7d5d7de6.b3fd985c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5017],{40108:e=>{e.exports=JSON.parse('{"label":"Rating","permalink":"/tags/rating","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/select-based/rating","title":"Rating","description":"This article explains how to create & work with a Rating field.","permalink":"/fields/field-types/select-based/rating"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7dce83b4.530372e4.js b/packages/noco-docs/dist/assets/js/7dce83b4.530372e4.js new file mode 100644 index 0000000000..d79b40bf88 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7dce83b4.530372e4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1193],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=a.createContext({}),s=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(r),h=n,f=u["".concat(c,".").concat(h)]||u[h]||d[h]||o;return r?a.createElement(f,i(i({ref:t},p),{},{components:r})):a.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=h;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var a=r(87462),n=(r(67294),r(3905));const o={title:"Search",description:"Learn how to search for records in NocoDB.",tags:["Table operations","Search","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table search","search table","search records","search"]},i=void 0,l={unversionedId:"table-operations/search",id:"table-operations/search",title:"Search",description:"Learn how to search for records in NocoDB.",source:"@site/docs/060.table-operations/070.search.md",sourceDirName:"060.table-operations",slug:"/table-operations/search",permalink:"/table-operations/search",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/070.search.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Search",permalink:"/tags/search"},{label:"Gallery view",permalink:"/tags/gallery-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:70,frontMatter:{title:"Search",description:"Learn how to search for records in NocoDB.",tags:["Table operations","Search","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table search","search table","search records","search"]},sidebar:"tutorialSidebar",previous:{title:"Record height",permalink:"/table-operations/row-height"},next:{title:"Download",permalink:"/table-operations/download"}},c={},s=[{value:"Related topics",id:"related-topics",level:3}],p={toc:s},u="wrapper";function d(e){let{components:t,...o}=e;return(0,n.kt)(u,(0,a.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"NocoDB offers a quick search feature that allows you to search for records by field from the toolbar menu. This feature is useful when working with large datasets and can be used in conjunction with the ",(0,n.kt)("inlineCode",{parentName:"p"},"Filter")," feature to further refine your search results."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"Search")," button in the toolbar menu (Optional)"),(0,n.kt)("li",{parentName:"ol"},"Choose the ",(0,n.kt)("inlineCode",{parentName:"li"},"Field")," to search by (Optional)"),(0,n.kt)("li",{parentName:"ol"},"Enter the search term in the search bar.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:r(23038).Z,width:"2304",height:"986"})),(0,n.kt)("h3",{id:"related-topics"},"Related topics"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"row-height"},"record height")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"download"},"Download"))))}d.isMDXComponent=!0},23038:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/table-search-762c0ea68ae64bfda3aee882a82a326e.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/7e18769a.abb76911.js b/packages/noco-docs/dist/assets/js/7e18769a.abb76911.js new file mode 100644 index 0000000000..f37c10832b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/7e18769a.abb76911.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4177],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>w});var n=i(67294);function a(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,n)}return i}function l(e){for(var t=1;t=0||(a[i]=e[i]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(a[i]=e[i])}return a}var c=n.createContext({}),s=function(e){var t=n.useContext(c),i=t;return e&&(i="function"==typeof e?e(t):l(l({},t),e)),i},p=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},v=n.forwardRef((function(e,t){var i=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),d=s(i),v=a,w=d["".concat(c,".").concat(v)]||d[v]||m[v]||o;return i?n.createElement(w,l(l({ref:t},p),{},{components:i})):n.createElement(w,l({ref:t},p))}));function w(e,t){var i=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=i.length,l=new Array(o);l[0]=v;var r={};for(var c in t)hasOwnProperty.call(t,c)&&(r[c]=t[c]);r.originalType=e,r[d]="string"==typeof e?e:a,l[1]=r;for(var s=2;s{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>s});var n=i(87462),a=(i(67294),i(3905));const o={title:"Actions on view",description:"Learn how to delete, rename, duplicate a a view in NocoDB.",tags:["Views","Rename","Duplicate","Delete","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","delete view","rename view","duplicate view"]},l=void 0,r={unversionedId:"views/actions-on-view",id:"views/actions-on-view",title:"Actions on view",description:"Learn how to delete, rename, duplicate a a view in NocoDB.",source:"@site/docs/090.views/090.actions-on-view.md",sourceDirName:"090.views",slug:"/views/actions-on-view",permalink:"/views/actions-on-view",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/090.actions-on-view.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Rename",permalink:"/tags/rename"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Delete",permalink:"/tags/delete"},{label:"Grid view",permalink:"/tags/grid-view"},{label:"Form view",permalink:"/tags/form-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Gallery view",permalink:"/tags/gallery-view"}],version:"current",sidebarPosition:90,frontMatter:{title:"Actions on view",description:"Learn how to delete, rename, duplicate a a view in NocoDB.",tags:["Views","Rename","Duplicate","Delete","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","delete view","rename view","duplicate view"]},sidebar:"tutorialSidebar",previous:{title:"Kanban",permalink:"/views/view-types/kanban"},next:{title:"Data sources overview",permalink:"/data-sources/data-source-overview"}},c={},s=[{value:"View context menu",id:"view-context-menu",level:2},{value:"Rename view",id:"rename-view",level:2},{value:"Change view icon",id:"change-view-icon",level:2},{value:"Duplicate view",id:"duplicate-view",level:2},{value:"Delete view",id:"delete-view",level:2}],p={toc:s},d="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(d,(0,n.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"view-context-menu"},"View context menu"),(0,a.kt)("p",null,"The view context menu provides a set of tools to interact with the view. The view context menu can be accessed by clicking on the ellipsis symbol (",(0,a.kt)("inlineCode",{parentName:"p"},"..."),") located next to view in the left sidebar."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(68939).Z,width:"1322",height:"721"})),(0,a.kt)("h2",{id:"rename-view"},"Rename view"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on the ellipsis symbol (",(0,a.kt)("inlineCode",{parentName:"li"},"..."),") next to view name located in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Rename")," option from the view context menu."),(0,a.kt)("li",{parentName:"ol"},"Enter the desired new view name into the provided field."),(0,a.kt)("li",{parentName:"ol"},"Use ",(0,a.kt)("inlineCode",{parentName:"li"},"Enter")," key to finalize the renaming process.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(68939).Z,width:"1322",height:"721"})),(0,a.kt)("h2",{id:"change-view-icon"},"Change view icon"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on the existing view icon to the left of the view name in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Select the desired icon from the list of available options.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(91301).Z,width:"2870",height:"1792"})),(0,a.kt)("h2",{id:"duplicate-view"},"Duplicate view"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on the ellipsis symbol (",(0,a.kt)("inlineCode",{parentName:"li"},"..."),") next to view name located in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Duplicate")," option from the view context menu."),(0,a.kt)("li",{parentName:"ol"},"Enter the desired new view name into the provided field."),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Duplicate View")," button in the confirmation dialog.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(68939).Z,width:"1322",height:"721"}),"\n",(0,a.kt)("img",{alt:"image",src:i(39269).Z,width:"1321",height:"718"})),(0,a.kt)("h2",{id:"delete-view"},"Delete view"),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"This action cannot be undone."))),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on the ellipsis symbol (",(0,a.kt)("inlineCode",{parentName:"li"},"..."),") next to view name located in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Delete")," option from the view context menu."),(0,a.kt)("li",{parentName:"ol"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"Delete View")," button in the confirmation dialog.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:i(68939).Z,width:"1322",height:"721"}),"\n",(0,a.kt)("img",{alt:"image",src:i(64871).Z,width:"1321",height:"717"})))}m.isMDXComponent=!0},64871:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/delete-view-confirmation-1afddd0d2975dde5d235b6ee04893b59.png"},39269:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/duplicate-confirmation-319dac1b1b6351e9c1da8019160cd854.png"},91301:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/view-change-icon-0aab6b0e9dc655406e8cfd2cee76454c.png"},68939:(e,t,i)=>{i.d(t,{Z:()=>n});const n=i.p+"assets/images/view-context-menu-2aaa116e512e31804a1c471b0af66371.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/81862c4f.a3dbfbec.js b/packages/noco-docs/dist/assets/js/81862c4f.a3dbfbec.js new file mode 100644 index 0000000000..4a5d7afdf4 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/81862c4f.a3dbfbec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1499],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),l=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=l(e.components);return r.createElement(c.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(n),g=o,m=p["".concat(c,".").concat(g)]||p[g]||d[g]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=g;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=n(87462),o=(n(67294),n(3905));const a={title:"Accessing APIs",description:"How to access NocoDB APIs with Auth or API token?"},i=void 0,s={unversionedId:"developer-resources/accessing-apis",id:"version-0.109.7/developer-resources/accessing-apis",title:"Accessing APIs",description:"How to access NocoDB APIs with Auth or API token?",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/010.accessing-apis.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/accessing-apis",permalink:"/0.109.7/developer-resources/accessing-apis",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/010.accessing-apis.md",tags:[],version:"0.109.7",sidebarPosition:10,frontMatter:{title:"Accessing APIs",description:"How to access NocoDB APIs with Auth or API token?"},sidebar:"tutorialSidebar",previous:{title:"Project settings",permalink:"/0.109.7/setup-and-usages/project-settings"},next:{title:"REST APIs",permalink:"/0.109.7/developer-resources/rest-apis"}},c={},l=[{value:"Auth Token",id:"auth-token",level:2},{value:"API Token",id:"api-token",level:2},{value:"Swagger UI",id:"swagger-ui",level:2}],u={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"NocoDB APIs can be authorized by either Auth Token or API Token."),(0,o.kt)("h2",{id:"auth-token"},"Auth Token"),(0,o.kt)("p",null,"Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_JWT_EXPIRES_IN"),". If you are passing Auth Token, make sure that the header is called ",(0,o.kt)("inlineCode",{parentName:"p"},"xc-auth"),"."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Go to NocoDB Project, click the rightmost button and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Copy Auth Token"),".\n")),(0,o.kt)("img",{width:"357",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856397-b2e194e8-5ca1-420e-8b46-e1345d1d91d3.png"}),(0,o.kt)("h2",{id:"api-token"},"API Token"),(0,o.kt)("p",null,"API tokens allows us to integrate seamlessly with 3rd party apps. See ",(0,o.kt)("a",{parentName:"p",href:"../setup-and-usages/team-and-auth#api-tokens-management"},"API Tokens Management")," for more."),(0,o.kt)("h2",{id:"swagger-ui"},"Swagger UI"),(0,o.kt)("p",null,"You can interact with the API's resources via Swagger UI."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Go to NocoDB Project, click the rightmost button and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Swagger APIs Doc"),".")),(0,o.kt)("img",{width:"325",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856535-c81bfc2a-8cdd-41aa-8aa6-9c667c972fa4.png"}),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Click ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorize"),", paste the token you copied in above steps and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorize")," to save.")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/164874471-29fc1630-ab99-4c25-8ce2-b41e5415e4be.png",alt:"image"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/824dfda1.9af56b1b.js b/packages/noco-docs/dist/assets/js/824dfda1.9af56b1b.js new file mode 100644 index 0000000000..eb69a776dd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/824dfda1.9af56b1b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4570],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=o.createContext({}),u=function(e){var t=o.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=u(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,f=p["".concat(l,".").concat(m)]||p[m]||d[m]||r;return n?o.createElement(f,i(i({ref:t},c),{},{components:n})):o.createElement(f,i({ref:t},c))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var u=2;u{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>u});var o=n(87462),a=(n(67294),n(3905));const r={title:"Usage Information",description:"Non-sensitive and anonymous usage information"},i=void 0,s={unversionedId:"setup-and-usages/usage-information",id:"version-0.109.7/setup-and-usages/usage-information",title:"Usage Information",description:"Non-sensitive and anonymous usage information",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/210.usage-information.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/usage-information",permalink:"/0.109.7/setup-and-usages/usage-information",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/210.usage-information.md",tags:[],version:"0.109.7",sidebarPosition:210,frontMatter:{title:"Usage Information",description:"Non-sensitive and anonymous usage information"},sidebar:"tutorialSidebar",previous:{title:"Import Airtable to NocoDB",permalink:"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free"},next:{title:"Links",permalink:"/0.109.7/setup-and-usages/links"}},l={},u=[{value:"Context",id:"context",level:2},{value:"What we collect ?",id:"what-we-collect-",level:2},{value:"What we DO NOT collect ?",id:"what-we-do-not-collect-",level:2},{value:"Opt-out",id:"opt-out",level:2}],c={toc:u},p="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"NocoDB is a fast growing open source project which is UI heavy and we are committed to providing a solution that exceeds the expectations of the users and community.\nWe are also committed to continuing to develop and make NocoDB even better than it is today.\nTo that end, NocoDB contains a feature in which anonymous and otherwise non-sensitive data is collected.\nThis anonymous and non-sensitive data gives a better understanding of how users are interacting and using the product."),(0,a.kt)("h2",{id:"context"},"Context"),(0,a.kt)("p",null,"We will always continue to do hands-on UI/UX testing, surveys, issue tracking and roadmap.\nOtherwise talk with the Community while striving to understand\nand deliver what is being asked for and what is needed, by any means available."),(0,a.kt)("p",null,"However, these above actions alone are often insufficient"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"To maintain an overall picture of the product usage."),(0,a.kt)("li",{parentName:"ul"},"Prioritising the efforts."),(0,a.kt)("li",{parentName:"ul"},"Impact of any breaking changes."),(0,a.kt)("li",{parentName:"ul"},"To understand whether UI improvements are helpful to users.")),(0,a.kt)("h2",{id:"what-we-collect-"},"What we collect ?"),(0,a.kt)("p",null,"We collect actions made on models (project, table, view, sharedView, user, hook, image, sharedBase etc) periodically with :"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"System information (OS, node version, docker or npm)"),(0,a.kt)("li",{parentName:"ul"},"Environment (dev, staging, production)"),(0,a.kt)("li",{parentName:"ul"},"Instance information (Unique machine ID, database type, count of projects and users)"),(0,a.kt)("li",{parentName:"ul"},"Failures.")),(0,a.kt)("p",null,"Our UI Dashboard is a Vuejs-Nuxtjs app. Actions taken on UI with completely anonymized route names are sent as payload."),(0,a.kt)("h2",{id:"what-we-do-not-collect-"},"What we DO NOT collect ?"),(0,a.kt)("p",null,"We do not collect any private or sensitive information, such as:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Personally identifiable information"),(0,a.kt)("li",{parentName:"ul"},"Credential information (endpoints, ports, DB connections, username/password)"),(0,a.kt)("li",{parentName:"ul"},"Database/User data")),(0,a.kt)("h2",{id:"opt-out"},"Opt-out"),(0,a.kt)("p",null,"To disable usage information collection please set following environment variable."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"NC_DISABLE_TELE=true")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/832fc58a.ea2a063d.js b/packages/noco-docs/dist/assets/js/832fc58a.ea2a063d.js new file mode 100644 index 0000000000..c026757fad --- /dev/null +++ b/packages/noco-docs/dist/assets/js/832fc58a.ea2a063d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9874],{56038:e=>{e.exports=JSON.parse('{"label":"Comments","permalink":"/tags/comments","allTagsPath":"/tags","count":1,"items":[{"id":"records/expand-record","title":"Expanded record","description":"Learn how to expand a record & work with it in NocoDB.","permalink":"/records/expand-record"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/83533542.208d10be.js b/packages/noco-docs/dist/assets/js/83533542.208d10be.js new file mode 100644 index 0000000000..7f5656b40b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/83533542.208d10be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3878],{83762:e=>{e.exports=JSON.parse('{"label":"Fields","permalink":"/tags/fields","allTagsPath":"/tags","count":37,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"fields/field-types/custom-types/attachment","title":"Attachment","description":"This article explains how to create & work with an Attachment field.","permalink":"/fields/field-types/custom-types/attachment"},{"id":"fields/field-types/custom-types/barcode","title":"Barcode","description":"This article explains how to create & work with a Barcode field.","permalink":"/fields/field-types/custom-types/barcode"},{"id":"fields/field-types/select-based/checkbox","title":"Checkbox","description":"This article explains how to create & work with a Checkbox field.","permalink":"/fields/field-types/select-based/checkbox"},{"id":"fields/field-types/formula/conditional-expressions","title":"Conditional expressions","description":"This article explains various conditional expressions that can be used in formula fields.","permalink":"/fields/field-types/formula/conditional-expressions"},{"id":"fields/field-types/numerical/currency","title":"Currency","description":"This article explains how to create & work with a Currency field.","permalink":"/fields/field-types/numerical/currency"},{"id":"fields/field-types/date-time-based/date","title":"Date","description":"This article explains how to create & work with a Date field.","permalink":"/fields/field-types/date-time-based/date"},{"id":"fields/field-types/formula/date-functions","title":"Date functions","description":"This article explains various date functions that can be used in formula fields.","permalink":"/fields/field-types/formula/date-functions"},{"id":"fields/field-types/date-time-based/date-time","title":"Date Time","description":"This article explains how to create & work with a Date Time field.","permalink":"/fields/field-types/date-time-based/date-time"},{"id":"fields/field-types/numerical/decimal","title":"Decimal","description":"This article explains how to create & work with a Decimal field.","permalink":"/fields/field-types/numerical/decimal"},{"id":"fields/display-value","title":"Display value","description":"This article explains how to set display value for a table & its use.","permalink":"/fields/display-value"},{"id":"fields/field-types/date-time-based/duration","title":"Duration","description":"This article explains how to create & work with a Duration field.","permalink":"/fields/field-types/date-time-based/duration"},{"id":"fields/field-types/text-based/email","title":"Email","description":"This article explains how to create & work with an Email field.","permalink":"/fields/field-types/text-based/email"},{"id":"fields/fields-overview","title":"Fields overview","description":"This article discusses various field types that NocoDB offers.","permalink":"/fields/fields-overview"},{"id":"fields/field-types/formula/formula","title":"Formula","description":"This article explains how to create & work with a Formula field.","permalink":"/fields/field-types/formula/formula"},{"id":"fields/field-types/custom-types/geometry","title":"Geometry","description":"This article explains how to create & work with a Geometry field.","permalink":"/fields/field-types/custom-types/geometry"},{"id":"fields/field-types/custom-types/json","title":"JSON","description":"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.","permalink":"/fields/field-types/custom-types/json"},{"id":"fields/field-types/links-based/links","title":"Links","description":"This article explains how to create & work with a Links field.","permalink":"/fields/field-types/links-based/links"},{"id":"fields/field-types/text-based/long-text","title":"Long text","description":"This article explains how to create & work with a Long text field.","permalink":"/fields/field-types/text-based/long-text"},{"id":"fields/field-types/links-based/lookup","title":"Lookup","description":"This article explains how to create & work with a Lookup field.","permalink":"/fields/field-types/links-based/lookup"},{"id":"fields/field-types/select-based/multi-select","title":"Multi Select","description":"This article explains how to create & work with a Multi select field.","permalink":"/fields/field-types/select-based/multi-select"},{"id":"fields/multi-fields-editor","title":"Multi-field editor","description":"Understanding use of multi-field editor in NocoDB!","permalink":"/fields/multi-fields-editor"},{"id":"fields/field-types/numerical/number","title":"Number","description":"This article explains how to create & work with a Number field.","permalink":"/fields/field-types/numerical/number"},{"id":"fields/field-types/formula/operators","title":"Numeric and Logical Operators","description":"This article explains various numeric and logical operators that can be used in formula fields.","permalink":"/fields/field-types/formula/operators"},{"id":"fields/field-types/formula/numeric-functions","title":"Numeric functions","description":"This article explains various numeric functions that can be used in formula fields.","permalink":"/fields/field-types/formula/numeric-functions"},{"id":"fields/field-types/numerical/percent","title":"Percent","description":"This article explains how to create & work with a Percent field.","permalink":"/fields/field-types/numerical/percent"},{"id":"fields/field-types/text-based/phonenumber","title":"Phone Number","description":"This article explains how to create & work with a Phone number field.","permalink":"/fields/field-types/text-based/phonenumber"},{"id":"fields/primary-key","title":"Primary key","description":"This article explains what a primary key is and how it is used in NocoDB.","permalink":"/fields/primary-key"},{"id":"fields/field-types/custom-types/QR-code","title":"QR code","description":"This article explains how to create & work with a QR code field.","permalink":"/fields/field-types/custom-types/QR-code"},{"id":"fields/field-types/select-based/rating","title":"Rating","description":"This article explains how to create & work with a Rating field.","permalink":"/fields/field-types/select-based/rating"},{"id":"fields/field-types/links-based/rollup","title":"Rollup","description":"This article explains how to create & work with a Rollup field.","permalink":"/fields/field-types/links-based/rollup"},{"id":"fields/field-types/text-based/single-line-text","title":"Single line text","description":"This article explains how to create & work with a Single line text field.","permalink":"/fields/field-types/text-based/single-line-text"},{"id":"fields/field-types/select-based/single-select","title":"Single Select","description":"This article explains how to create & work with a Single select field.","permalink":"/fields/field-types/select-based/single-select"},{"id":"fields/field-types/custom-types/specific-db-type","title":"Specific DB type","description":"This article explains how to create & work with a Specific DB Type field.","permalink":"/fields/field-types/custom-types/specific-db-type"},{"id":"fields/field-types/formula/string-functions","title":"String functions","description":"This article explains various string functions that can be used in formula fields.","permalink":"/fields/field-types/formula/string-functions"},{"id":"fields/field-types/date-time-based/time","title":"Time","description":"This article explains how to create & work with a Time field.","permalink":"/fields/field-types/date-time-based/time"},{"id":"fields/field-types/text-based/url","title":"URL","description":"This article explains how to create & work with an URL field.","permalink":"/fields/field-types/text-based/url"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/83cf658d.6228d6ec.js b/packages/noco-docs/dist/assets/js/83cf658d.6228d6ec.js new file mode 100644 index 0000000000..940948899e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/83cf658d.6228d6ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3845],{43678:s=>{s.exports=JSON.parse('{"label":"REST APIs","permalink":"/tags/rest-ap-is","allTagsPath":"/tags","count":1,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/8498c216.483f8889.js b/packages/noco-docs/dist/assets/js/8498c216.483f8889.js new file mode 100644 index 0000000000..bc039baf41 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/8498c216.483f8889.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3381],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),g=r,m=p["".concat(s,".").concat(g)]||p[g]||d[g]||i;return n?a.createElement(m,o(o({ref:t},u),{},{components:n})):a.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const i={title:"i18n translation",description:"Contribute to NocoDB's i18n translation",tags:["Engineering"]},o=void 0,l={unversionedId:"engineering/translation",id:"engineering/translation",title:"i18n translation",description:"Contribute to NocoDB's i18n translation",source:"@site/docs/150.engineering/070.translation.md",sourceDirName:"150.engineering",slug:"/engineering/translation",permalink:"/engineering/translation",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/070.translation.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:70,frontMatter:{title:"i18n translation",description:"Contribute to NocoDB's i18n translation",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"Releases & builds",permalink:"/engineering/builds-and-releases"},next:{title:"Writing docs",permalink:"/engineering/writing-docs"}},s={},c=[{value:"How to add / edit translations ?",id:"how-to-add--edit-translations-",level:2},{value:"Using Github",id:"using-github",level:3},{value:"Using Crowdin",id:"using-crowdin",level:3},{value:"Reference",id:"reference",level:4},{value:"How to add a new language ?",id:"how-to-add-a-new-language-",level:2},{value:"GitHub changes",id:"github-changes",level:4},{value:"Crowdin changes admin only",id:"crowdin-changes-admin-only",level:4},{value:"String Categories",id:"string-categories",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"NocoDB supports 30+ foreign languages & community contributions are now simplified via ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com/"},"Crowdin"),".")),(0,r.kt)("h2",{id:"how-to-add--edit-translations-"},"How to add / edit translations ?"),(0,r.kt)("h3",{id:"using-github"},"Using Github"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"For English, make changes directly to ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/blob/develop/packages/nc-gui/lang/en.json"},"en.json")," & commit to ",(0,r.kt)("inlineCode",{parentName:"li"},"develop")),(0,r.kt)("li",{parentName:"ul"},"For any other language, use ",(0,r.kt)("inlineCode",{parentName:"li"},"crowdin")," option.")),(0,r.kt)("h3",{id:"using-crowdin"},"Using Crowdin"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Setup ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com"},"Crowdin")," account"),(0,r.kt)("li",{parentName:"ul"},"Join ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com/project/nocodb"},"NocoDB")," project")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189181511-51b8671e-bee8-45d5-8216-a4a031bc6309.png",alt:"Screenshot 2022-09-08 at 10 26 23 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Click the language that you wish to contribute")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189182132-0eed7d5a-eaa1-43e1-929d-688f375763c1.png",alt:"Screenshot 2022-09-08 at 10 29 56 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Click the ",(0,r.kt)("inlineCode",{parentName:"li"},"Translate")," button; this opens up ",(0,r.kt)("inlineCode",{parentName:"li"},"Crowdin Online Editor"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189182450-999124e8-566c-40af-9d3c-731a11c1b6aa.png",alt:"Screenshot 2022-09-08 at 10 32 17 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Select string in ",(0,r.kt)("inlineCode",{parentName:"li"},"English")," on the left-hand menu bar ","[1]"),(0,r.kt)("li",{parentName:"ul"},"Propose changes ","[2]"),(0,r.kt)("li",{parentName:"ul"},"Save ","[3]","\nNote: Crowdin provides translation recommendation's as in ","[4]",". Click directly if it's apt\n")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189184278-69d688ed-4e5a-4d5a-b629-9f6d10d79346.png",alt:"Screenshot 2022-09-08 at 10 37 38 PM"})),(0,r.kt)("p",null,"A GitHub Pull Request will be automatically triggered (periodicity- 6 hours). We will follow up on remaining integration work items."),(0,r.kt)("h4",{id:"reference"},"Reference"),(0,r.kt)("p",null,"Refer following articles to get additional details about Crowdin Portal usage"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/crowdin-intro/"},"Translator Introduction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/for-volunteer-translators/"},"Volunteer Translation Introduction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/online-editor/"},"Online Editor")," ")),(0,r.kt)("h2",{id:"how-to-add-a-new-language-"},"How to add a new language ?"),(0,r.kt)("h4",{id:"github-changes"},"GitHub changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Update enumeration in ",(0,r.kt)("inlineCode",{parentName:"li"},"enums.ts")," ","[packages/nc-gui/lib/enums.ts]"),(0,r.kt)("li",{parentName:"ul"},"Map JSON path in ",(0,r.kt)("inlineCode",{parentName:"li"},"a.i18n.ts")," ","[packages/nc-gui/plugins/a.i18n.ts]")),(0,r.kt)("h4",{id:"crowdin-changes-admin-only"},"Crowdin changes ","[admin only]"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open ",(0,r.kt)("inlineCode",{parentName:"li"},"NocoDB")," project"),(0,r.kt)("li",{parentName:"ul"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Language")," on the home tab"),(0,r.kt)("li",{parentName:"ul"},"Select target language, ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")),(0,r.kt)("li",{parentName:"ul"},"Update array in ",(0,r.kt)("inlineCode",{parentName:"li"},"tests/playwright/tests/language.spec.ts")," ")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189186570-5c1c7cad-6d3f-4937-ab4d-fa7ebe022cb1.png",alt:"Screenshot 2022-09-08 at 10 52 59 PM"})),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189186632-0b9f5f55-0550-4d8f-a8ae-7e9b9076774e.png",alt:"Screenshot 2022-09-08 at 10 54 04 PM"})),(0,r.kt)("h2",{id:"string-categories"},"String Categories"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"General"),": simple & common tokens (save, cancel, submit, open, close, home, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Objects"),": objects from NocoDB POV (project, table, field, view, page, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Title"),": screen headers (compact) (menu headers, modal headers)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Lables"),": text box/ radio/ field headers (few words) (Labels over textbox, radio buttons, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Activity"),"/ actions: work items (few words) (Create Project, Delete Table, Add Record, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Tooltip"),": additional information associated with work items (usually lengthy) (Additional information provided for activity)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Placeholder"),": placeholders associated with various textboxes (Text placeholders)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Msg"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Info: general/success category for everything"),(0,r.kt)("li",{parentName:"ul"},"Error: warnings & errors"),(0,r.kt)("li",{parentName:"ul"},"Toast: pop-up toast messages")))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Note: string name should be in camelCase. Use above list as priority order in case of ambiguity.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/855d76bb.e625ba60.js b/packages/noco-docs/dist/assets/js/855d76bb.e625ba60.js new file mode 100644 index 0000000000..1fbe37e3a6 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/855d76bb.e625ba60.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6141],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>v});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),s=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(p.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=s(r),m=o,v=d["".concat(p,".").concat(m)]||d[m]||u[m]||a;return r?n.createElement(v,i(i({ref:t},c),{},{components:r})):n.createElement(v,i({ref:t},c))}));function v(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>s});var n=r(87462),o=(r(67294),r(3905));const a={title:"NocoDB SDK",description:"NocoDB SDK Overview"},i=void 0,l={unversionedId:"developer-resources/sdk",id:"version-0.109.7/developer-resources/sdk",title:"NocoDB SDK",description:"NocoDB SDK Overview",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/030.sdk.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/sdk",permalink:"/0.109.7/developer-resources/sdk",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/030.sdk.md",tags:[],version:"0.109.7",sidebarPosition:30,frontMatter:{title:"NocoDB SDK",description:"NocoDB SDK Overview"},sidebar:"tutorialSidebar",previous:{title:"REST APIs",permalink:"/0.109.7/developer-resources/rest-apis"},next:{title:"Webhooks",permalink:"/0.109.7/developer-resources/webhooks"}},p={},s=[{value:"SDK For Javascript",id:"sdk-for-javascript",level:2},{value:"Install nocodb-sdk",id:"install-nocodb-sdk",level:3},{value:"Import Api",id:"import-api",level:3},{value:"Configure Api",id:"configure-api",level:3},{value:"Example: Auth Token",id:"example-auth-token",level:4},{value:"Example: API Token",id:"example-api-token",level:4},{value:"Call Functions",id:"call-functions",level:3},{value:"Example: Calling API - /api/v1/db/meta/projects/{projectId}/tables",id:"example-calling-api---apiv1dbmetaprojectsprojectidtables",level:4}],c={toc:s},d="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(d,(0,n.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"We provide SDK for users to integrate with their applications. Currently only SDK for Javascript is supported."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"The NocoDB SDK requires authorization token. If you haven't created one, please check out ",(0,o.kt)("a",{href:"/0.109.7/developer-resources/accessing-apis",target:"_blank"},"Accessing APIs")," for details.")),(0,o.kt)("h2",{id:"sdk-for-javascript"},"SDK For Javascript"),(0,o.kt)("h3",{id:"install-nocodb-sdk"},"Install nocodb-sdk"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"npm i nocodb-sdk\n")),(0,o.kt)("h3",{id:"import-api"},"Import Api"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"import { Api } from 'nocodb-sdk'\n")),(0,o.kt)("h3",{id:"configure-api"},"Configure Api"),(0,o.kt)("p",null,"The Api can be authorizated by either Auth Token or API Token."),(0,o.kt)("h4",{id:"example-auth-token"},"Example: Auth Token"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const api = new Api({\n baseURL: 'https://:',\n headers: {\n 'xc-auth': ''\n }\n})\n")),(0,o.kt)("h4",{id:"example-api-token"},"Example: API Token"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"const api = new Api({\n baseURL: 'https://:',\n headers: {\n 'xc-token': ''\n }\n})\n")),(0,o.kt)("h3",{id:"call-functions"},"Call Functions"),(0,o.kt)("p",null,"Once you have configured ",(0,o.kt)("inlineCode",{parentName:"p"},"api"),", you can call different types of APIs by ",(0,o.kt)("inlineCode",{parentName:"p"},"api.."),". "),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"For Tag and FunctionName, please check out the API table ",(0,o.kt)("a",{href:"/0.109.7/developer-resources/rest-apis",target:"_blank"},"here"),".")),(0,o.kt)("h4",{id:"example-calling-api---apiv1dbmetaprojectsprojectidtables"},"Example: Calling API - /api/v1/db/meta/projects/{projectId}/tables"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-js"},"await api.dbTable.create(params)\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/86fc9284.a1a65b52.js b/packages/noco-docs/dist/assets/js/86fc9284.a1a65b52.js new file mode 100644 index 0000000000..63b8cfc0e4 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/86fc9284.a1a65b52.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[305],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||r;return n?o.createElement(h,l(l({ref:t},c),{},{components:n})):o.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,l=new Array(r);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:a,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var o=n(87462),a=(n(67294),n(3905));const r={title:"Link To Another Record",description:"Understanding Link To Another Record (LTAR) Columns!"},l=void 0,i={unversionedId:"setup-and-usages/link-to-another-record",id:"version-0.109.7/setup-and-usages/link-to-another-record",title:"Link To Another Record",description:"Understanding Link To Another Record (LTAR) Columns!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/060.link-to-another-record.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/link-to-another-record",permalink:"/0.109.7/setup-and-usages/link-to-another-record",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/060.link-to-another-record.md",tags:[],version:"0.109.7",sidebarPosition:60,frontMatter:{title:"Link To Another Record",description:"Understanding Link To Another Record (LTAR) Columns!"},sidebar:"tutorialSidebar",previous:{title:"Code Snippets",permalink:"/0.109.7/setup-and-usages/code-snippets"},next:{title:"Lookup",permalink:"/0.109.7/setup-and-usages/lookup"}},s={},p=[{value:"Relationship types:",id:"relationship-types",level:3},{value:"Adding a relationship",id:"adding-a-relationship",level:2},{value:"1. Create column",id:"1-create-column",level:3},{value:"2. Update column name",id:"2-update-column-name",level:3},{value:"3. Select column type",id:"3-select-column-type",level:3},{value:"4. Choose relationship type",id:"4-choose-relationship-type",level:3},{value:"5. Select child table from drop down menu",id:"5-select-child-table-from-drop-down-menu",level:3},{value:"6. Click on 'Save'",id:"6-click-on-save",level:3},{value:"Updating linked records",id:"updating-linked-records",level:2},{value:"1. Open link record tab",id:"1-open-link-record-tab",level:3},{value:"2. Select from the option displayed",id:"2-select-from-the-option-displayed",level:3},{value:"3. Column mapping showing "Has Many" relationship",id:"3-column-mapping-showing-has-many-relationship",level:3},{value:"4. Column mapping for "Belongs to" relationship Automatically updated",id:"4-column-mapping-for-belongs-to-relationship-automatically-updated",level:3}],c={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h3",{id:"relationship-types"},"Relationship types:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"One to one",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"A Table record in first table is related to only one record of second table."),(0,a.kt)("li",{parentName:"ul"},"Example: Country has a capital city"))),(0,a.kt)("li",{parentName:"ul"},"One to many",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"A Table record in first table is related to more than one record of second table. But second table record maps to only one entry of first table"),(0,a.kt)("li",{parentName:"ul"},"NocoDB refers to this category of relationship as ",(0,a.kt)("strong",{parentName:"li"},"has many")),(0,a.kt)("li",{parentName:"ul"},"For every ",(0,a.kt)("strong",{parentName:"li"},"has many")," relation defined, NocoDB augments ",(0,a.kt)("strong",{parentName:"li"},"belongs to")," relationship column in the other table automatically"),(0,a.kt)("li",{parentName:"ul"},"Example: Country ",(0,a.kt)("strong",{parentName:"li"},"has many")," Cities. (other way mapping > City ",(0,a.kt)("strong",{parentName:"li"},"belongs to")," Country )"))),(0,a.kt)("li",{parentName:"ul"},"Many to many",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},"A Table record in first table is related to more than one record of second table; second table record can also map to more than on record of first table."),(0,a.kt)("li",{parentName:"ul"},"NocoDB refers to this category of relationship as ",(0,a.kt)("strong",{parentName:"li"},"many to many")),(0,a.kt)("li",{parentName:"ul"},"For every ",(0,a.kt)("strong",{parentName:"li"},"many to many")," relation defined between tables, NocoDB augments ",(0,a.kt)("strong",{parentName:"li"},"many to many")," relationship column in the other table automatically"),(0,a.kt)("li",{parentName:"ul"},"Example: Film ",(0,a.kt)("strong",{parentName:"li"},"has many")," Actors. Actor ",(0,a.kt)("strong",{parentName:"li"},"has many")," Films (works on many films)")))),(0,a.kt)("p",null,"Further details of relationship types can be found ",(0,a.kt)("a",{parentName:"p",href:"https://afteracademy.com/blog/what-are-the-different-types-of-relationships-in-dbms"},"here")),(0,a.kt)("p",null,"Relationships between table records can be established by using ",(0,a.kt)("strong",{parentName:"p"},"LinkToAnotherRecord")," column type.\nWorkflow details are captured below"),(0,a.kt)("h2",{id:"adding-a-relationship"},"Adding a relationship"),(0,a.kt)("img",{width:"1016",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189105583-20014dd9-e5a6-4f27-b03c-97fad9096b5f.png"}),(0,a.kt)("h3",{id:"1-create-column"},"1. Create column"),(0,a.kt)("p",null,"Click on '+' button at end of column headers"),(0,a.kt)("h3",{id:"2-update-column-name"},"2. Update column name"),(0,a.kt)("p",null,"Input name in the text box provided"),(0,a.kt)("h3",{id:"3-select-column-type"},"3. Select column type"),(0,a.kt)("p",null,'Select Column type as "LinkToAnotherRecord" from the drop-down menu'),(0,a.kt)("h3",{id:"4-choose-relationship-type"},"4. Choose relationship type"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"'Has Many' corresponds to the 'One-to-many' relationships"),(0,a.kt)("li",{parentName:"ul"},"'Many To Many' corresponds to the 'Many-to-many' relationships")),(0,a.kt)("h3",{id:"5-select-child-table-from-drop-down-menu"},"5. Select child table from drop down menu"),(0,a.kt)("h3",{id:"6-click-on-save"},"6. Click on 'Save'"),(0,a.kt)("p",null,"A new column will get created in both the parent table & child table"),(0,a.kt)("h2",{id:"updating-linked-records"},"Updating linked records"),(0,a.kt)("h3",{id:"1-open-link-record-tab"},"1. Open link record tab"),(0,a.kt)("p",null,"Click on the '+' icon in corresponding row - cell"),(0,a.kt)("img",{width:"750",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189106326-90e46156-798d-4a01-a4eb-4e991ce94c03.png"}),(0,a.kt)("h3",{id:"2-select-from-the-option-displayed"},"2. Select from the option displayed"),(0,a.kt)("p",null,"Use 'Filter box' to narrow down on search items\nYou can opt to insert a new record as well, using \"+ New Record\" button"),(0,a.kt)("img",{width:"1014",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189106494-4b49a200-a44f-41ae-8b54-93b18d867a04.png"}),(0,a.kt)("h3",{id:"3-column-mapping-showing-has-many-relationship"},'3. Column mapping showing "Has Many" relationship'),(0,a.kt)("p",null,"Sheet1 'has many' Sheet2"),(0,a.kt)("img",{width:"756",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189106702-3b8d7a50-08f4-4a04-b2cb-16db0cf667b3.png"}),(0,a.kt)("h3",{id:"4-column-mapping-for-belongs-to-relationship-automatically-updated"},'4. Column mapping for "Belongs to" relationship ',"[Automatically updated]"),(0,a.kt)("p",null,"Sheet2 'belongs to' Sheet1"),(0,a.kt)("img",{width:"574",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189106731-59e5bc3c-bcc5-4796-b5b2-d9b5418bfe2b.png"}))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/87e9af65.48fa1223.js b/packages/noco-docs/dist/assets/js/87e9af65.48fa1223.js new file mode 100644 index 0000000000..d0b76cec88 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/87e9af65.48fa1223.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4507],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},l="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),l=p(r),m=o,f=l["".concat(c,".").concat(m)]||l[m]||u[m]||a;return r?n.createElement(f,i(i({ref:t},d),{},{components:r})):n.createElement(f,i({ref:t},d))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[l]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>p});var n=r(87462),o=(r(67294),r(3905));const a={title:"Demos",description:"NocoDB Demos",hide_table_of_contents:!0},i=void 0,s={unversionedId:"getting-started/demos",id:"version-0.109.7/getting-started/demos",title:"Demos",description:"NocoDB Demos",source:"@site/versioned_docs/version-0.109.7/020.getting-started/040.demos.md",sourceDirName:"020.getting-started",slug:"/getting-started/demos",permalink:"/0.109.7/getting-started/demos",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/020.getting-started/040.demos.md",tags:[],version:"0.109.7",sidebarPosition:40,frontMatter:{title:"Demos",description:"NocoDB Demos",hide_table_of_contents:!0},sidebar:"tutorialSidebar",previous:{title:"Upgrading",permalink:"/0.109.7/getting-started/upgrading"},next:{title:"Dashboard",permalink:"/0.109.7/setup-and-usages/dashboard"}},c={},p=[],d={toc:p},l="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(l,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Demos are loading from ",(0,o.kt)("a",{parentName:"p",href:"https://nocodb.com"},"https://nocodb.com")," (please wait)"),(0,o.kt)("iframe",{src:"https://nocodb.com/demos",width:"100%",style:{height:"100vh"}}))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/88cc213e.37ccf1de.js b/packages/noco-docs/dist/assets/js/88cc213e.37ccf1de.js new file mode 100644 index 0000000000..d35ebc8333 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/88cc213e.37ccf1de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4193],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>u});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),d=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=d(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=d(a),m=r,u=p["".concat(s,".").concat(m)]||p[m]||b[m]||l;return a?n.createElement(u,i(i({ref:t},c),{},{components:a})):n.createElement(u,i({ref:t},c))}));function u(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[p]="string"==typeof e?e:r,i[1]=o;for(var d=2;d{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>b,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const l={title:"Share Base",description:"Procedures to share a base & generating embedded iframe"},i=void 0,o={unversionedId:"setup-and-usages/share-base",id:"version-0.109.7/setup-and-usages/share-base",title:"Share Base",description:"Procedures to share a base & generating embedded iframe",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/130.share-base.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/share-base",permalink:"/0.109.7/setup-and-usages/share-base",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/130.share-base.md",tags:[],version:"0.109.7",sidebarPosition:130,frontMatter:{title:"Share Base",description:"Procedures to share a base & generating embedded iframe"},sidebar:"tutorialSidebar",previous:{title:"Sync Schema",permalink:"/0.109.7/setup-and-usages/sync-schema"},next:{title:"Share View",permalink:"/0.109.7/setup-and-usages/share-view"}},s={},d=[{value:"Generate Share base",id:"generate-share-base",level:2},{value:"Modify Share base",id:"modify-share-base",level:2},{value:"Disable Share base",id:"disable-share-base",level:2},{value:"Share base Access Permissions",id:"share-base-access-permissions",level:2},{value:"Embeddable Frame",id:"embeddable-frame",level:2},{value:"Generate embeddable HTML code",id:"generate-embeddable-html-code",level:3},{value:"Embed into application's HTML Body",id:"embed-into-applications-html-body",level:3}],c={toc:d},p="wrapper";function b(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"generate-share-base"},"Generate Share base"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open Project "),(0,r.kt)("li",{parentName:"ul"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Invite Team")," button on bottom left tool bar")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/192435607-ee00326e-3890-4478-8260-e5c7c286f03a.png",alt:"image"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Under ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared base link")," tab and toggle from ",(0,r.kt)("inlineCode",{parentName:"li"},"Disabled Share base")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"Anyone with the link"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/192435735-71fc161b-48fc-49e2-94ad-55713932f10a.png",alt:"image"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Share base link generated is displayed over & can be used to share this project to others in the team ","[Selection (2) in the image below]")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/154789725-a1194e30-3101-423a-bd5c-25009c361b96.png",alt:"Screenshot 2022-02-19 at 12 01 58 PM"})),(0,r.kt)("h2",{id:"modify-share-base"},"Modify Share base"),(0,r.kt)("p",null,"Modifying ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," will invalidate the ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," link generated previously and will generate a new link."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open Project base"),(0,r.kt)("li",{parentName:"ul"},"Click on 'Share' button on top right tool bar"),(0,r.kt)("li",{parentName:"ul"},"Click on 'Reload' button on Quick menu (next to Shared base link)")),(0,r.kt)("h2",{id:"disable-share-base"},"Disable Share base"),(0,r.kt)("p",null,"Disabling ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," will invalidate the generated ",(0,r.kt)("inlineCode",{parentName:"p"},"Share base")," link"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open Project base"),(0,r.kt)("li",{parentName:"ul"},"Click on 'Share' button on top right tool bar"),(0,r.kt)("li",{parentName:"ul"},"Under ",(0,r.kt)("inlineCode",{parentName:"li"},"Shared base link")," and toggle from ",(0,r.kt)("inlineCode",{parentName:"li"},"Anyone with the link")," to ",(0,r.kt)("inlineCode",{parentName:"li"},"Disable Share base"))),(0,r.kt)("h2",{id:"share-base-access-permissions"},"Share base Access Permissions"),(0,r.kt)("p",null,"Shared base can be configured as"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Viewer - User with the link will get ",(0,r.kt)("strong",{parentName:"li"},"READ ONLY")," access to the project data."),(0,r.kt)("li",{parentName:"ul"},"Editor - User with the link will get ",(0,r.kt)("strong",{parentName:"li"},"READ & WRITE")," access to the project data.")),(0,r.kt)("h2",{id:"embeddable-frame"},"Embeddable Frame"),(0,r.kt)("p",null,"NocoDB interface can be embedded into existing applications easily by making use of ",(0,r.kt)("a",{parentName:"p",href:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe"},"HTML IFRAME"),") attribute."),(0,r.kt)("h3",{id:"generate-embeddable-html-code"},"Generate embeddable HTML code"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open Project base"),(0,r.kt)("li",{parentName:"ul"},"Click on 'Share' button on top right tool bar"),(0,r.kt)("li",{parentName:"ul"},"Under 'Shared base link' tab",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Click on button to copy 'Embeddable HTML code'")))),(0,r.kt)("p",null,"Example:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-html"},'\n\n')),(0,r.kt)("h3",{id:"embed-into-applications-html-body"},"Embed into application's HTML Body"),(0,r.kt)("p",null,"Sample code with embedded iframe generated above"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-html"},'\n\n \n \n \n\n')))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/8a8a6f17.b9888edf.js b/packages/noco-docs/dist/assets/js/8a8a6f17.b9888edf.js new file mode 100644 index 0000000000..67ce102eca --- /dev/null +++ b/packages/noco-docs/dist/assets/js/8a8a6f17.b9888edf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9060],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),c=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(r),g=n,f=d["".concat(s,".").concat(g)]||d[g]||u[g]||i;return r?o.createElement(f,a(a({ref:t},p),{},{components:r})):o.createElement(f,a({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,a[1]=l;for(var c=2;c{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var o=r(87462),n=(r(67294),r(3905));const i={title:"Sorting records",description:"Learn how to sort records in NocoDB.",tags:["Table operations","Sort","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table","sort","sort records"]},a=void 0,l={unversionedId:"table-operations/sort",id:"table-operations/sort",title:"Sorting records",description:"Learn how to sort records in NocoDB.",source:"@site/docs/060.table-operations/040.sort.md",sourceDirName:"060.table-operations",slug:"/table-operations/sort",permalink:"/table-operations/sort",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/040.sort.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Sort",permalink:"/tags/sort"},{label:"Gallery view",permalink:"/tags/gallery-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:40,frontMatter:{title:"Sorting records",description:"Learn how to sort records in NocoDB.",tags:["Table operations","Sort","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table","sort","sort records"]},sidebar:"tutorialSidebar",previous:{title:"Filtering records",permalink:"/table-operations/filter"},next:{title:"Grouping records",permalink:"/table-operations/group-by"}},s={},c=[{value:"Adding or Editing Sort",id:"adding-or-editing-sort",level:3},{value:"Deleting Sort",id:"deleting-sort",level:3},{value:"Related topics",id:"related-topics",level:3}],p={toc:c},d="wrapper";function u(e){let{components:t,...i}=e;return(0,n.kt)(d,(0,o.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Sorting enables you to arrange your data alphabetically (A \u2192 Z) or (Z \u2192 A) for text based types and in ascending or descending order for numerical types. NocoDB supports nested sorting, allowing you to select fields and the order in which to apply nested sorting. "),(0,n.kt)("h3",{id:"adding-or-editing-sort"},"Adding or Editing Sort"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click the ",(0,n.kt)("inlineCode",{parentName:"li"},"Sort")," button in the toolbar menu."),(0,n.kt)("li",{parentName:"ol"},"Choose the ",(0,n.kt)("inlineCode",{parentName:"li"},"Field")," to sort by."),(0,n.kt)("li",{parentName:"ol"},"Configure the sorting ",(0,n.kt)("inlineCode",{parentName:"li"},"Direction")," : ascending or descending")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Sort Field",src:r(87792).Z,width:"2304",height:"1020"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Sort Direction",src:r(56722).Z,width:"2306",height:"858"})),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"You can configure multiple fields for subsequent-level sorting.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Nested Sorting",src:r(41967).Z,width:"2306",height:"940"})),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Field configured at the top will be used for the first-level sorting, followed by subsequent fields in a top-down order")),(0,n.kt)("h3",{id:"deleting-sort"},"Deleting Sort"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Click the ",(0,n.kt)("inlineCode",{parentName:"li"},"Sort")," button in the toolbar.",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Click on the bin icon to the right of the sort you wish to delete.")))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Delete Sorting",src:r(25969).Z,width:"2306",height:"940"})),(0,n.kt)("h3",{id:"related-topics"},"Related topics"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"row-height"},"record height")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"download"},"Download"))))}u.isMDXComponent=!0},87792:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/sort-1-fa0fe0c81f35a773f6c03ae98c05751f.png"},56722:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/sort-2-9b1d1e39e76dca86dbf63d9c4d59f940.png"},41967:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/sort-3-3b0cf33ff1728c5649bcf6de7a5073ff.png"},25969:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/sort-4-124856ebba5f7b4ca9d8cc67ff97a32b.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/8f10bd27.f42b91e2.js b/packages/noco-docs/dist/assets/js/8f10bd27.f42b91e2.js new file mode 100644 index 0000000000..6c32acf21c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/8f10bd27.f42b91e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8916],{60107:s=>{s.exports=JSON.parse('{"label":"Sync","permalink":"/tags/sync","allTagsPath":"/tags","count":1,"items":[{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","permalink":"/data-sources/sync-with-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9040003c.21ca2128.js b/packages/noco-docs/dist/assets/js/9040003c.21ca2128.js new file mode 100644 index 0000000000..bb098e68df --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9040003c.21ca2128.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8511],{3905:(e,o,t)=>{t.d(o,{Zo:()=>m,kt:()=>k});var r=t(67294);function a(e,o,t){return o in e?Object.defineProperty(e,o,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[o]=t,e}function n(e,o){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);o&&(r=r.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var o=1;o=0||(a[t]=e[t]);return a}(e,o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),c=function(e){var o=r.useContext(l),t=o;return e&&(t="function"==typeof e?e(o):i(i({},o),e)),t},m=function(e){var o=c(e.components);return r.createElement(l.Provider,{value:o},e.children)},p="mdxType",b={inlineCode:"code",wrapper:function(e){var o=e.children;return r.createElement(r.Fragment,{},o)}},d=r.forwardRef((function(e,o){var t=e.components,a=e.mdxType,n=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=c(t),d=a,k=p["".concat(l,".").concat(d)]||p[d]||b[d]||n;return t?r.createElement(k,i(i({ref:o},m),{},{components:t})):r.createElement(k,i({ref:o},m))}));function k(e,o){var t=arguments,a=o&&o.mdxType;if("string"==typeof e||a){var n=t.length,i=new Array(n);i[0]=d;var s={};for(var l in o)hasOwnProperty.call(o,l)&&(s[l]=o[l]);s.originalType=e,s[p]="string"==typeof e?e:a,i[1]=s;for(var c=2;c{t.r(o),t.d(o,{assets:()=>l,contentTitle:()=>i,default:()=>b,frontMatter:()=>n,metadata:()=>s,toc:()=>c});var r=t(87462),a=(t(67294),t(3905));const n={title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",tags:["Collaboration","Workspaces","Members","Invite","Roles"],keywords:["Invite members","Member roles","Access permissions","Displaying workspace members","Modifying member roles","Removing workspace members","Workspace collaboration","Workspace settings"]},i=void 0,s={unversionedId:"collaboration/workspace-collaboration",id:"collaboration/workspace-collaboration",title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",source:"@site/docs/120.collaboration/010.workspace-collaboration.md",sourceDirName:"120.collaboration",slug:"/collaboration/workspace-collaboration",permalink:"/collaboration/workspace-collaboration",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/010.workspace-collaboration.md",tags:[{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Members",permalink:"/tags/members"},{label:"Invite",permalink:"/tags/invite"},{label:"Roles",permalink:"/tags/roles"}],version:"current",sidebarPosition:10,frontMatter:{title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",tags:["Collaboration","Workspaces","Members","Invite","Roles"],keywords:["Invite members","Member roles","Access permissions","Displaying workspace members","Modifying member roles","Removing workspace members","Workspace collaboration","Workspace settings"]},sidebar:"tutorialSidebar",previous:{title:"Collaboration overview",permalink:"/collaboration/collaboration-overview"},next:{title:"Base collaboration",permalink:"/collaboration/base-collaboration"}},l={},c=[{value:"Invite members to Workspace",id:"invite-members-to-workspace",level:2},{value:"List Workspace members",id:"list-workspace-members",level:2},{value:"Modify Workspace Member Roles",id:"modify-workspace-member-roles",level:2},{value:"Remove Workspace Members",id:"remove-workspace-members",level:2}],m={toc:c},p="wrapper";function b(e){let{components:o,...n}=e;return(0,a.kt)(p,(0,r.Z)({},m,n,{components:o,mdxType:"MDXLayout"}),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"A comprehensive guide regarding roles and permissions can be accessed ",(0,a.kt)("a",{parentName:"p",href:"/roles-and-permissions/roles-permissions-overview"},"here"),".")),(0,a.kt)("h2",{id:"invite-members-to-workspace"},"Invite members to Workspace"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Navigate to the Workspace configuration page by selecting ",(0,a.kt)("inlineCode",{parentName:"li"},"Team & Settings")," in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Input the email address of the intended member for the invitation."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Role")," dropdown menu"),(0,a.kt)("li",{parentName:"ol"},"Choose the appropriate access permission for the member from the dropdown menu."),(0,a.kt)("li",{parentName:"ol"},"Conclude the process by selecting the ",(0,a.kt)("inlineCode",{parentName:"li"},"Add Member(s)")," button.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:t(63013).Z,width:"2874",height:"1574"})),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"You have the capability to invite multiple members simultaneously by entering their email addresses, separated by commas.")),(0,a.kt)("h2",{id:"list-workspace-members"},"List Workspace members"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"Members")," tab displays a list of users who have been granted access to the workspace.\n",(0,a.kt)("img",{alt:"image",src:t(2594).Z,width:"2878",height:"1476"})),(0,a.kt)("h2",{id:"modify-workspace-member-roles"},"Modify Workspace Member Roles"),(0,a.kt)("p",null,"You can modify the access permissions of members by following these steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Access the dropdown menu."),(0,a.kt)("li",{parentName:"ol"},"Select the desired new role option.\n",(0,a.kt)("img",{alt:"image",src:t(64593).Z,width:"2872",height:"1324"}))),(0,a.kt)("h2",{id:"remove-workspace-members"},"Remove Workspace Members"),(0,a.kt)("p",null,"To remove a member from the workspace, take the following steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on the vertical ellipses ",(0,a.kt)("inlineCode",{parentName:"li"},"\u22ee")," to open the context menu."),(0,a.kt)("li",{parentName:"ol"},"Select the ",(0,a.kt)("inlineCode",{parentName:"li"},"Remove User")," option.\n",(0,a.kt)("img",{alt:"image",src:t(5401).Z,width:"2868",height:"1396"}))))}b.isMDXComponent=!0},63013:(e,o,t)=>{t.d(o,{Z:()=>r});const r=t.p+"assets/images/workspace-collaboration-acb162d8d579249744a6a2d6e3280fbf.png"},2594:(e,o,t)=>{t.d(o,{Z:()=>r});const r=t.p+"assets/images/workspace-members-list-52e58f7e389b1a6840ce31a4a195104a.png"},5401:(e,o,t)=>{t.d(o,{Z:()=>r});const r=t.p+"assets/images/workspace-members-remove-70769f0f7d860d5436cd08030d0e26c2.png"},64593:(e,o,t)=>{t.d(o,{Z:()=>r});const r=t.p+"assets/images/workspace-members-role-change-be6445f0fa9629193ac81affb3b843f1.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9059.f590360f.js b/packages/noco-docs/dist/assets/js/9059.f590360f.js new file mode 100644 index 0000000000..e5ce53d1c5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9059.f590360f.js @@ -0,0 +1,2 @@ +/*! For license information please see 9059.f590360f.js.LICENSE.txt */ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9059],{45303:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r=a(n(67294)),o=a(n(40895));function a(e){return e&&e.__esModule?e:{default:e}}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=a(n(67294)),o=a(n(40895));function a(e){return e&&e.__esModule?e:{default:e}}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=a(n(67294)),o=a(n(40895));function a(e){return e&&e.__esModule?e:{default:e}}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=a(n(67294)),o=a(n(40895));function a(e){return e&&e.__esModule?e:{default:e}}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=a(n(67294)),o=a(n(45697));function a(e){return e&&e.__esModule?e:{default:e}}var i=function(e){var t=e.size,n=void 0===t?24:t,o=e.fill,a=void 0===o?"#000":o,i=e.className,l=e.path;return r.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:n,height:n,viewBox:"0 0 24 24",className:i},r.default.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),r.default.createElement("path",{fill:a,d:l}))};i.propTypes={size:o.default.number,fill:o.default.string,className:o.default.string,path:o.default.string.isRequired};var l=i;t.default=l},91609:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=d();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(67294)),o=u(n(45697)),a=n(83824),i=u(n(90183)),l=n(75473),s=n(95756),c=n(46568);function u(e){return e&&e.__esModule?e:{default:e}}function d(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return d=function(){return e},e}function m(){return m=Object.assign||function(e){for(var t=1;t1?(0,c.guessMaxImageWidth)(n.state.dimensions):0,supportsWebp:c.supportsWebp}),t=n.props.getUrl,r=t?t(e):e.src,o=n.props.shouldAutoDownload(function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=l(n(67294)),o=l(n(91609)),a=l(n(64490)),i=l(n(80663));function l(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u=function(e){return r.default.createElement(o.default,e)};u.defaultProps=function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=s();if(t&&t.has(e))return t.get(e);var n={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}n.default=e,t&&t.set(e,n);return n}(n(67294)),o=l(n(45697)),a=l(n(25776)),i=n(75473);function l(e){return e&&e.__esModule?e:{default:e}}function s(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return s=function(){return e},e}function c(){return c=Object.assign||function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;t.default=function(){for(var e,t=[],n=arguments.length,r=new Array(n),o=0;o1?t.join(" "):t[0],style:e}}},75473:(e,t)=>{"use strict";t.__esModule=!0,t.loadStates=t.icons=void 0;var n="loading",r="loaded",o="error",a={load:"load",loading:n,loaded:r,error:o,noicon:"noicon",offline:"offline"};t.icons=a;var i={initial:"initial",loading:n,loaded:r,error:o};t.loadStates=i},46568:(e,t)=>{"use strict";t.__esModule=!0,t.fallbackParams=t.selectSrc=t.supportsWebp=t.bytesToSize=t.guessMaxImageWidth=t.nativeConnection=t.ssr=void 0;var n="undefined"==typeof window||"ReactSnap"===window.navigator.userAgent;t.ssr=n;var r=!n&&!!window.navigator.connection;t.nativeConnection=r;t.guessMaxImageWidth=function(e,t){if(n)return 0;t||(t=window);var r,o=e.width,a=t.screen,i=a.width,l=a.height,s=document.documentElement,c=t.innerWidth||s.clientWidth,u=t.innerHeight||s.clientHeight,d=t.devicePixelRatio||1;if(i>c){var m=document.getElementsByTagName("body")[0],f=c-o;r=(m.clientHeight>u||m.clientHeight>l)&&f<=15?i-f:o/c*i}else r=o;return r*d};t.bytesToSize=function(e){var t=["Bytes","KB","MB","GB","TB"];if(0===e)return"n/a";var n=parseInt(Math.floor(Math.log(e)/Math.log(1024)),10);return 0===n?e+" "+t[n]:(e/Math.pow(1024,n)).toFixed(1)+" "+t[n]};var o=function(){if(n)return!1;var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))&&0===e.toDataURL("image/webp").indexOf("data:image/webp")}();t.supportsWebp=o;var a=function(e){return"webp"===e.format||e.src&&e.src.match(/\.webp($|\?.*)/i)};t.selectSrc=function(e){var t,n,r=e.srcSet,o=e.maxImageWidth,i=e.supportsWebp;if(0===r.length)throw new Error("Need at least one item in srcSet");if(i)0===(t=r.filter(a)).length&&(t=r);else if(0===(t=r.filter((function(e){return!a(e)}))).length)throw new Error("Need at least one supported format item in srcSet");var l=t.filter((function(e){return e.width>=o}));return 0===l.length?(l=t,n=Math.max.apply(null,l.map((function(e){return e.width})))):n=Math.min.apply(null,l.map((function(e){return e.width}))),t.filter((function(e){return e.width===n}))[0]};t.fallbackParams=function(e){var t=e.srcSet,r=e.getUrl;if(!n)return{};var o=t.filter((function(e){return!a(e)})),i=o[0];return{nsSrcSet:o.map((function(e){return(r?r(e):e.src)+" "+e.width+"w"})).join(","),nsSrc:r?r(i):i.src,ssr:n}}},64490:(e,t,n)=>{"use strict";t.__esModule=!0,t.default=void 0;var r,o=c(n(45303)),a=c(n(34442)),i=c(n(62266)),l=c(n(6818)),s=n(75473);function c(e){return e&&e.__esModule?e:{default:e}}var u=s.icons.load,d=s.icons.loading,m=s.icons.loaded,f=s.icons.error,p=s.icons.noicon,h=s.icons.offline,v=((r={})[u]=o.default,r[d]=l.default,r[m]=null,r[f]=i.default,r[p]=null,r[h]=a.default,r);t.default=v},95756:(e,t,n)=>{"use strict";t.__esModule=!0,t.xhrLoader=t.imageLoader=t.timeout=t.combineCancel=void 0;var r=n(3646);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}t.combineCancel=function(e,t){if(!t)return e;var n=e.then((function(e){return e}),(function(e){return e}));return n.cancel=function(){e.cancel(),t.cancel()},n};t.timeout=function(e){var t,n=new Promise((function(n){t=setTimeout(n,e)}));return n.cancel=function(){clearTimeout(t),t=void 0},n};var i=function(e){var t=new Image,n=new Promise((function(n,r){t.onload=n,t.onabort=t.onerror=function(){return r({})},t.src=e}));return n.cancel=function(){if(!t)throw new Error("Already canceled");t.onload=t.onabort=t.onerror=void 0,t.src="",t=void 0},n};t.imageLoader=i;t.xhrLoader=function(e,t){var n=new r.UnfetchAbortController,l=n.signal,s=new Promise((function(n,s){return(0,r.unfetch)(e,function(e){for(var t=1;t{"use strict";t.__esModule=!0,t.default=void 0;t.default={placeholder:{backgroundSize:"cover",backgroundRepeat:"no-repeat",position:"relative"},img:{width:"100%",height:"auto",maxWidth:"100%",marginBottom:"-4px"},icon:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center"},noscript:{position:"absolute",top:0,left:0}}},3646:(e,t)=>{"use strict";t.__esModule=!0,t.unfetch=t.UnfetchAbortController=void 0;t.UnfetchAbortController=function(){var e=this;this.signal={onabort:function(){}},this.abort=function(){return e.signal.onabort()}};t.unfetch=function(e,t){return t=t||{},new Promise((function(n,r){var o=new XMLHttpRequest;for(var a in o.open(t.method||"get",e,!0),t.headers)o.setRequestHeader(a,t.headers[a]);function i(){var e,t=[],n=[],r={};return o.getAllResponseHeaders().replace(/^(.*?):\s*?([\s\S]*?)$/gm,(function(o,a,i){t.push(a=a.toLowerCase()),n.push([a,i]),e=r[a],r[a]=e?e+","+i:i})),{ok:2==(o.status/100|0),status:o.status,statusText:o.statusText,url:o.responseURL,clone:i,text:function(){return Promise.resolve(o.responseText)},json:function(){return Promise.resolve(o.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([o.response]))},headers:{keys:function(){return t},entries:function(){return n},get:function(e){return r[e.toLowerCase()]},has:function(e){return e.toLowerCase()in r}}}}o.withCredentials="include"===t.credentials,o.onload=function(){n(i())},o.onerror=r,t.signal&&(t.signal.onabort=function(){o.onerror=o.onload=void 0,o.abort()}),o.send(t.body)}))}},51065:(e,t,n)=>{"use strict";var r;t.Z=void 0;var o=((r=n(57474))&&r.__esModule?r:{default:r}).default;t.Z=o},3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>p});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=c(n),f=o,p=d["".concat(s,".").concat(f)]||d[f]||m[f]||a;return n?r.createElement(p,i(i({ref:t},u),{},{components:n})):r.createElement(p,i({ref:t},u))}));function p(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:o,i[1]=l;for(var c=2;c{"use strict";n.d(t,{Z:()=>s});var r=n(87462),o=n(67294),a=n(51065),i=n(97325);function l(e,t){switch(e){case"noicon":case"loaded":return null;case"loading":return(0,i.I)({id:"theme.IdealImageMessage.loading",message:"Loading...",description:"When the full-scale image is loading"});case"load":{const{pickedSrc:e}=t,{size:n}=e,r=n?` (${function(e){const t=["B","KB","MB","GB","TB"];if(0===e)return"n/a";const n=Math.floor(Math.log(e)/Math.log(1024));return 0===n?`${e} ${t[n]}`:`${(e/1024**n).toFixed(1)} ${t[n]}`}(n)})`:"";return(0,i.I)({id:"theme.IdealImageMessage.load",message:"Click to load{sizeMessage}",description:"To prompt users to load the full image. sizeMessage is a parenthesized size figure."},{sizeMessage:r})}case"offline":return(0,i.I)({id:"theme.IdealImageMessage.offline",message:"Your browser is offline. Image not loaded",description:"When the user is viewing an offline document"});case"error":{const{loadInfo:e}=t;return 404===e?(0,i.I)({id:"theme.IdealImageMessage.404error",message:"404. Image not found",description:"When the image is not found"}):(0,i.I)({id:"theme.IdealImageMessage.error",message:"Error. Click to reload",description:"When the image fails to load for unknown error"})}default:throw new Error(`Wrong icon: ${e}`)}}function s(e){const{img:t,...n}=e;return"string"==typeof t||"default"in t?o.createElement("img",(0,r.Z)({src:"string"==typeof t?t:t.default},n)):o.createElement(a.Z,(0,r.Z)({},n,{height:t.src.height??100,width:t.src.width??100,placeholder:{lqip:t.preSrc},src:t.src.src,srcSet:t.src.images.map((e=>({...e,src:e.path}))),getMessage:l}))}},94776:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Oe});var r=n(67294),o=n(35463),a=n(43768);const i=r.createContext(null);function l(e){let{children:t,content:n}=e;const o=function(e){return(0,r.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocProvider");return e}function c(){const{metadata:e,frontMatter:t,assets:n}=s();return r.createElement(o.d,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var u=n(86010),d=n(13488),m=n(87462),f=n(97325),p=n(83699);function h(e){const{permalink:t,title:n,subLabel:o,isNext:a}=e;return r.createElement(p.Z,{className:(0,u.Z)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},o&&r.createElement("div",{className:"pagination-nav__sublabel"},o),r.createElement("div",{className:"pagination-nav__label"},n))}function v(e){const{previous:t,next:n}=e;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,f.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&r.createElement(h,(0,m.Z)({},t,{subLabel:r.createElement(f.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),n&&r.createElement(h,(0,m.Z)({},n,{subLabel:r.createElement(f.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function g(){const{metadata:e}=s();return r.createElement(v,{previous:e.previous,next:e.next})}var b=n(39962),y=n(89871),E=n(23702),w=n(86409),k=n(58801);const C={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return r.createElement(f.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:r.createElement("b",null,n.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return r.createElement(f.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:r.createElement("b",null,n.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function N(e){const t=C[e.versionMetadata.banner];return r.createElement(t,e)}function _(e){let{versionLabel:t,to:n,onClick:o}=e;return r.createElement(f.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:r.createElement("b",null,r.createElement(p.Z,{to:n,onClick:o},r.createElement(f.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function L(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:o}}=(0,b.Z)(),{pluginId:a}=(0,y.gA)({failfast:!0}),{savePreferredVersionName:i}=(0,w.J)(a),{latestDocSuggestion:l,latestVersionSuggestion:s}=(0,y.Jo)(a),c=l??(d=s).docs.find((e=>e.id===d.mainDocId));var d;return r.createElement("div",{className:(0,u.Z)(t,E.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},r.createElement("div",null,r.createElement(N,{siteTitle:o,versionMetadata:n})),r.createElement("div",{className:"margin-top--md"},r.createElement(_,{versionLabel:s.label,to:c.path,onClick:()=>i(s.name)})))}function O(e){let{className:t}=e;const n=(0,k.E)();return n.banner?r.createElement(L,{className:t,versionMetadata:n}):null}function S(e){let{className:t}=e;const n=(0,k.E)();return n.badge?r.createElement("span",{className:(0,u.Z)(t,E.k.docs.docVersionBadge,"badge badge--secondary")},r.createElement(f.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label}},"Version: {versionLabel}")):null}function T(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n}=e;return r.createElement(f.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:r.createElement("b",null,r.createElement("time",{dateTime:new Date(1e3*t).toISOString()},n))}}," on {date}")}function x(e){let{lastUpdatedBy:t}=e;return r.createElement(f.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:r.createElement("b",null,t)}}," by {user}")}function j(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:n,lastUpdatedBy:o}=e;return r.createElement("span",{className:E.k.common.lastUpdated},r.createElement(f.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&n?r.createElement(T,{lastUpdatedAt:t,formattedLastUpdatedAt:n}):"",byUser:o?r.createElement(x,{lastUpdatedBy:o}):""}},"Last updated{atDate}{byUser}"),!1)}const B={iconEdit:"iconEdit_Z9Sw"};function P(e){let{className:t,...n}=e;return r.createElement("svg",(0,m.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.Z)(B.iconEdit,t),"aria-hidden":"true"},n),r.createElement("g",null,r.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function M(e){let{editUrl:t}=e;return r.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:E.k.common.editThisPage},r.createElement(P,null),r.createElement(f.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var Z=n(53852);const I={tags:"tags_jXut",tag:"tag_QGVx"};function H(e){let{tags:t}=e;return r.createElement(r.Fragment,null,r.createElement("b",null,r.createElement(f.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),r.createElement("ul",{className:(0,u.Z)(I.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:n}=e;return r.createElement("li",{key:n,className:I.tag},r.createElement(Z.Z,{label:t,permalink:n}))}))))}const A={lastUpdated:"lastUpdated_vwxv"};function z(e){return r.createElement("div",{className:(0,u.Z)(E.k.docs.docFooterTagsRow,"row margin-bottom--sm")},r.createElement("div",{className:"col"},r.createElement(H,e)))}function V(e){let{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:o,formattedLastUpdatedAt:a}=e;return r.createElement("div",{className:(0,u.Z)(E.k.docs.docFooterEditMetaRow,"row")},r.createElement("div",{className:"col"},t&&r.createElement(M,{editUrl:t})),r.createElement("div",{className:(0,u.Z)("col",A.lastUpdated)},(n||o)&&r.createElement(j,{lastUpdatedAt:n,formattedLastUpdatedAt:a,lastUpdatedBy:o})))}function D(){const{metadata:e}=s(),{editUrl:t,lastUpdatedAt:n,formattedLastUpdatedAt:o,lastUpdatedBy:a,tags:i}=e,l=i.length>0,c=!!(t||n||a);return l||c?r.createElement("footer",{className:(0,u.Z)(E.k.docs.docFooter,"docusaurus-mt-lg")},l&&r.createElement(z,{tags:i}),c&&r.createElement(V,{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:a,formattedLastUpdatedAt:o})):null}var R=n(54639),U=n(20107);function W(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const r=n.slice(2,e.level);e.parentIndex=Math.max(...r),n[e.level]=t}));const r=[];return t.forEach((e=>{const{parentIndex:n,...o}=e;n>=0?t[n].children.push(o):r.push(o)})),r}function q(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=q({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function $(e){const t=e.getBoundingClientRect();return t.top===t.bottom?$(e.parentNode):t}function F(e,t){let{anchorTopOffset:n}=t;const r=e.find((e=>$(e).top>=n));if(r){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function Y(e){const t=(0,r.useRef)(void 0),n=G();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:o,minHeadingLevel:a,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let o=t;o<=n;o+=1)r.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:a,maxHeadingLevel:i}),s=F(l,{anchorTopOffset:n.current}),c=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(o),e.classList.add(o),t.current=e):e.classList.remove(o)}(e,e===c)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function J(e){let{toc:t,className:n,linkClassName:o,isChild:a}=e;return t.length?r.createElement("ul",{className:a?void 0:n},t.map((e=>r.createElement("li",{key:e.id},r.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(J,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const K=r.memo(J);function X(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l,...s}=e;const c=(0,U.L)(),u=i??c.tableOfContents.minHeadingLevel,d=l??c.tableOfContents.maxHeadingLevel,f=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>q({toc:W(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:u,maxHeadingLevel:d});return Y((0,r.useMemo)((()=>{if(o&&a)return{linkClassName:o,linkActiveClassName:a,minHeadingLevel:u,maxHeadingLevel:d}}),[o,a,u,d])),r.createElement(K,(0,m.Z)({toc:f,className:n,linkClassName:o},s))}const Q={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function ee(e){let{collapsed:t,...n}=e;return r.createElement("button",(0,m.Z)({type:"button"},n,{className:(0,u.Z)("clean-btn",Q.tocCollapsibleButton,!t&&Q.tocCollapsibleButtonExpanded,n.className)}),r.createElement(f.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const te={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function ne(e){let{toc:t,className:n,minHeadingLevel:o,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:l}=(0,R.u)({initialState:!0});return r.createElement("div",{className:(0,u.Z)(te.tocCollapsible,!i&&te.tocCollapsibleExpanded,n)},r.createElement(ee,{collapsed:i,onClick:l}),r.createElement(R.z,{lazy:!0,className:te.tocCollapsibleContent,collapsed:i},r.createElement(X,{toc:t,minHeadingLevel:o,maxHeadingLevel:a})))}const re={tocMobile:"tocMobile_ITEo"};function oe(){const{toc:e,frontMatter:t}=s();return r.createElement(ne,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.Z)(E.k.docs.docTocMobile,re.tocMobile)})}const ae={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},ie="table-of-contents__link toc-highlight",le="table-of-contents__link--active";function se(e){let{className:t,...n}=e;return r.createElement("div",{className:(0,u.Z)(ae.tableOfContents,"thin-scrollbar",t)},r.createElement(X,(0,m.Z)({},n,{linkClassName:ie,linkActiveClassName:le})))}function ce(){const{toc:e,frontMatter:t}=s();return r.createElement(se,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:E.k.docs.docTocDesktop})}var ue=n(13899),de=n(3905),me=n(4308);function fe(e){let{children:t}=e;return r.createElement(de.Zo,{components:me.Z},t)}function pe(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=s();return t.hide_title||void 0!==n?null:e.title}();return r.createElement("div",{className:(0,u.Z)(E.k.docs.docMarkdown,"markdown")},n&&r.createElement("header",null,r.createElement(ue.Z,{as:"h1"},n)),r.createElement(fe,null,t))}var he=n(78259),ve=n(69003),ge=n(79524);function be(e){return r.createElement("svg",(0,m.Z)({viewBox:"0 0 24 24"},e),r.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const ye={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function Ee(){const e=(0,ge.Z)("/");return r.createElement("li",{className:"breadcrumbs__item"},r.createElement(p.Z,{"aria-label":(0,f.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},r.createElement(be,{className:ye.breadcrumbHomeIcon})))}const we={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function ke(e){let{children:t,href:n,isLast:o}=e;const a="breadcrumbs__link";return o?r.createElement("span",{className:a,itemProp:"name"},t):n?r.createElement(p.Z,{className:a,href:n,itemProp:"item"},r.createElement("span",{itemProp:"name"},t)):r.createElement("span",{className:a},t)}function Ce(e){let{children:t,active:n,index:o,addMicrodata:a}=e;return r.createElement("li",(0,m.Z)({},a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,u.Z)("breadcrumbs__item",{"breadcrumbs__item--active":n})}),t,r.createElement("meta",{itemProp:"position",content:String(o+1)}))}function Ne(){const e=(0,he.s1)(),t=(0,ve.Ns)();return e?r.createElement("nav",{className:(0,u.Z)(E.k.docs.docBreadcrumbs,we.breadcrumbsContainer),"aria-label":(0,f.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},r.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&r.createElement(Ee,null),e.map(((t,n)=>{const o=n===e.length-1;return r.createElement(Ce,{key:n,active:o,index:n,addMicrodata:!!t.href},r.createElement(ke,{href:t.href,isLast:o},t.label))})))):null}const _e={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function Le(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=s(),n=(0,d.i)(),o=e.hide_table_of_contents,a=!o&&t.length>0;return{hidden:o,mobile:a?r.createElement(oe,null):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:r.createElement(ce,null)}}();return r.createElement("div",{className:"row"},r.createElement("div",{className:(0,u.Z)("col",!n.hidden&&_e.docItemCol)},r.createElement(O,null),r.createElement("div",{className:_e.docItemContainer},r.createElement("article",null,r.createElement(Ne,null),r.createElement(S,null),n.mobile,r.createElement(pe,null,t),r.createElement(D,null)),r.createElement(g,null))),n.desktop&&r.createElement("div",{className:"col col--3"},n.desktop))}function Oe(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,n=e.content;return r.createElement(l,{content:e.content},r.createElement(o.FG,{className:t},r.createElement(c,null),r.createElement(Le,null,r.createElement(n,null))))}},13899:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(87462),o=n(67294),a=n(86010),i=n(97325),l=n(20107),s=n(83699);const c={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:d}}=(0,l.L)();if("h1"===t||!n)return o.createElement(t,(0,r.Z)({},u,{id:void 0}));const m=(0,i.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return o.createElement(t,(0,r.Z)({},u,{className:(0,a.Z)("anchor",d?c.anchorWithHideOnScrollNavbar:c.anchorWithStickyNavbar,u.className),id:n}),u.children,o.createElement(s.Z,{className:"hash-link",to:`#${n}`,"aria-label":m,title:m},"\u200b"))}},40545:(e,t,n)=>{"use strict";n.d(t,{Z:()=>pe});var r=n(87462),o=n(67294),a=n(31514);var i=n(51048),l=n(86010),s=n(9200),c=n(20107);function u(){const{prism:e}=(0,c.L)(),{colorMode:t}=(0,s.I)(),n=e.theme,r=e.darkTheme||n;return"dark"===t?r:n}var d=n(23702),m=n(87594),f=n.n(m);const p=/title=(?["'])(?.*?)\1/,h=/\{(?<range>[\d,-]+)\}/,v={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function g(e,t){const n=e.map((e=>{const{start:n,end:r}=v[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${r})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b(e,t){let n=e.replace(/\n$/,"");const{language:r,magicComments:o,metastring:a}=t;if(a&&h.test(a)){const e=a.match(h).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,r=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(r),code:n}}if(void 0===r)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],t);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],t);case"html":return g(["js","jsBlock","html"],t);case"python":case"py":case"bash":return g(["bash"],t);case"markdown":case"md":return g(["html","jsx","bash"],t);default:return g(Object.keys(v),t)}}(r,o),l=n.split("\n"),s=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),c=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let f=0;f<l.length;){const e=l[f].match(i);if(!e){f+=1;continue}const t=e.slice(1).find((e=>void 0!==e));c[t]?s[c[t]].range+=`${f},`:u[t]?s[u[t]].start=f:d[t]&&(s[d[t]].range+=`${s[d[t]].start}-${f-1},`),l.splice(f,1)}n=l.join("\n");const m={};return Object.entries(s).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};function E(e){let{as:t,...n}=e;const a=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[r,o]=e;const a=t[r];a&&"string"==typeof o&&(n[a]=o)})),n}(u());return o.createElement(t,(0,r.Z)({},n,{style:a,className:(0,l.Z)(n.className,y.codeBlockContainer,d.k.common.codeBlock)}))}const w={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function k(e){let{children:t,className:n}=e;return o.createElement(E,{as:"pre",tabIndex:0,className:(0,l.Z)(w.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:w.codeBlockLines},t))}var C=n(43768);const N={attributes:!0,characterData:!0,childList:!0,subtree:!0};function _(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=N);const r=(0,C.zX)(t),a=(0,C.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var O={Prism:n(87410).Z,theme:L};function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(){return T=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},T.apply(this,arguments)}var x=/\r\n|\r|\n/,j=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},B=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function P(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var M=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),S(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,r=Object.create(null),o=e.styles.reduce((function(e,n){var r=n.languages,o=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=T({},e[t],o);e[t]=n})),e}),r);return o.root=n,o.plain=T({},n,{backgroundColor:null}),o}(e.theme,e.language):void 0;return t.themeDict=n})),S(this,"getLineProps",(function(e){var n=e.key,r=e.className,o=e.style,a=T({},P(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),i=t.getThemeDict(t.props);return void 0!==i&&(a.style=i.plain),void 0!==o&&(a.style=void 0!==a.style?T({},a.style,o):o),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),S(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,o=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===o&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===o&&!r)return a[n[0]];var i=r?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[i].concat(l))}})),S(this,"getTokenProps",(function(e){var n=e.key,r=e.className,o=e.style,a=e.token,i=T({},P(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==o&&(i.style=void 0!==i.style?T({},i.style,o):o),void 0!==n&&(i.key=n),r&&(i.className+=" "+r),i})),S(this,"tokenize",(function(e,t,n,r){var o={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",o);var a=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,o=e.children,a=this.getThemeDict(this.props),i=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],r=[0],o=[e.length],a=0,i=0,l=[],s=[l];i>-1;){for(;(a=r[i]++)<o[i];){var c=void 0,u=t[i],d=n[i][a];if("string"==typeof d?(u=i>0?u:["plain"],c=d):(u=B(u,d.type),d.alias&&(u=B(u,d.alias)),c=d.content),"string"==typeof c){var m=c.split(x),f=m.length;l.push({types:u,content:m[0]});for(var p=1;p<f;p++)j(l),s.push(l=[]),l.push({types:u,content:m[p]})}else i++,t.push(u),n.push(c),r.push(0),o.push(c.length)}i--,t.pop(),n.pop(),r.pop(),o.pop()}return j(l),s}(void 0!==i?this.tokenize(t,r,i,n):[r]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const Z=M,I={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function H(e){let{line:t,classNames:n,showLineNumbers:a,getLineProps:i,getTokenProps:s}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=i({line:t,className:(0,l.Z)(n,a&&I.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,r.Z)({key:t},s({token:e,key:t})))));return o.createElement("span",c,a?o.createElement(o.Fragment,null,o.createElement("span",{className:I.codeLineNumber}),o.createElement("span",{className:I.codeLineContent},u)):u,o.createElement("br",null))}var A=n(97325);function z(e){return o.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function V(e){return o.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const D={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function R(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),i=(0,o.useRef)(void 0),s=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const r=document.createElement("textarea"),o=document.activeElement;r.value=e,r.setAttribute("readonly",""),r.style.contain="strict",r.style.position="absolute",r.style.left="-9999px",r.style.fontSize="12pt";const a=document.getSelection(),i=a.rangeCount>0&&a.getRangeAt(0);n.append(r),r.select(),r.selectionStart=0,r.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}r.remove(),i&&(a.removeAllRanges(),a.addRange(i)),o&&o.focus()}(t),a(!0),i.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(i.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,A.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,A.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,A.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,l.Z)("clean-btn",n,D.copyButton,r&&D.copyButtonCopied),onClick:s},o.createElement("span",{className:D.copyButtonIcons,"aria-hidden":"true"},o.createElement(z,{className:D.copyButtonIcon}),o.createElement(V,{className:D.copyButtonSuccessIcon})))}function U(e){return o.createElement("svg",(0,r.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const W={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function q(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,A.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,l.Z)("clean-btn",t,r&&W.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement(U,{className:W.wordWrapButtonIcon,"aria-hidden":"true"}))}function $(e){let{children:t,className:n="",metastring:a,title:i,showLineNumbers:s,language:d}=e;const{prism:{defaultLanguage:m,magicComments:f}}=(0,c.L)(),h=d??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??m,v=u(),g=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),i=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return _(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:i}}(),y=function(e){return e?.match(p)?.groups.title??""}(a)||i,{lineClassNames:k,code:C}=b(t,{metastring:a,language:h,magicComments:f}),N=s??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return o.createElement(E,{as:"div",className:(0,l.Z)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`)},y&&o.createElement("div",{className:w.codeBlockTitle},y),o.createElement("div",{className:w.codeBlockContent},o.createElement(Z,(0,r.Z)({},O,{theme:v,code:C,language:h??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:g.codeBlockRef,className:(0,l.Z)(t,w.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,l.Z)(w.codeBlockLines,N&&w.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(H,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:k[t],showLineNumbers:N})))))})),o.createElement("div",{className:w.buttonGroup},(g.isEnabled||g.isCodeScrollable)&&o.createElement(q,{className:w.codeButton,onClick:()=>g.toggle(),isEnabled:g.isEnabled}),o.createElement(R,{className:w.codeButton,code:C}))))}function F(e){let{children:t,...n}=e;const a=(0,i.Z)(),l=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),s="string"==typeof l?$:k;return o.createElement(s,(0,r.Z)({key:String(a)},n),l)}var G=n(83699);var Y=n(54639);const J={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function K(e){return!!e&&("SUMMARY"===e.tagName||K(e.parentElement))}function X(e,t){return!!e&&(e===t||X(e.parentElement,t))}function Q(e){let{summary:t,children:n,...a}=e;const s=(0,i.Z)(),c=(0,o.useRef)(null),{collapsed:u,setCollapsed:d}=(0,Y.u)({initialState:!a.open}),[m,f]=(0,o.useState)(a.open),p=o.isValidElement(t)?t:o.createElement("summary",null,t??"Details");return o.createElement("details",(0,r.Z)({},a,{ref:c,open:m,"data-collapsed":u,className:(0,l.Z)(J.details,s&&J.isBrowser,a.className),onMouseDown:e=>{K(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;K(t)&&X(t,c.current)&&(e.preventDefault(),u?(d(!1),f(!0)):d(!0))}}),p,o.createElement(Y.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),f(!e)}},o.createElement("div",{className:J.collapsibleContent},n)))}const ee={details:"details_b_Ee"},te="alert alert--info";function ne(e){let{...t}=e;return o.createElement(Q,(0,r.Z)({},t,{className:(0,l.Z)(te,ee.details,t.className)}))}var re=n(13899);function oe(e){return o.createElement(re.Z,e)}const ae={containsTaskList:"containsTaskList_mC6p"};const ie={img:"img_ev3q"};const le="admonition_LlT9",se="admonitionHeading_tbUL",ce="admonitionIcon_kALy",ue="admonitionContent_S0QG";const de={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(A.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(A.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(A.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(A.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(A.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},me={secondary:"note",important:"info",success:"tip",warning:"danger"};function fe(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const pe={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(a.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(F,e)},a:function(e){return o.createElement(G.Z,e)},pre:function(e){return o.createElement(F,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),a=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(ne,(0,r.Z)({},e,{summary:n}),a)},ul:function(e){return o.createElement("ul",(0,r.Z)({},e,{className:(t=e.className,(0,l.Z)(t,t?.includes("contains-task-list")&&ae.containsTaskList))}));var t},img:function(e){return o.createElement("img",(0,r.Z)({loading:"lazy"},e,{className:(t=e.className,(0,l.Z)(t,ie.img))}));var t},h1:e=>o.createElement(oe,(0,r.Z)({as:"h1"},e)),h2:e=>o.createElement(oe,(0,r.Z)({as:"h2"},e)),h3:e=>o.createElement(oe,(0,r.Z)({as:"h3"},e)),h4:e=>o.createElement(oe,(0,r.Z)({as:"h4"},e)),h5:e=>o.createElement(oe,(0,r.Z)({as:"h5"},e)),h6:e=>o.createElement(oe,(0,r.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=fe(e),i=function(e){const t=me[e]??e,n=de[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),de.info)}(n),s=r??i.label,{iconComponent:c}=i,u=a??o.createElement(c,null);return o.createElement("div",{className:(0,l.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${i.infimaClassName}`,le)},o.createElement("div",{className:se},o.createElement("span",{className:ce},u),s),o.createElement("div",{className:ue},t))},mermaid:()=>null}},18679:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(67294),o=n(86010);const a={tabItem:"tabItem_Ymn6"};function i(e){let{children:t,hidden:n,className:i}=e;return r.createElement("div",{role:"tabpanel",className:(0,o.Z)(a.tabItem,i),hidden:n},t)}},73992:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var r=n(87462),o=n(67294),a=n(86010),i=n(72957),l=n(16550),s=n(75238),c=n(33609),u=n(92560);function d(e){return function(e){return o.Children.map(e,(e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:t,label:n,attributes:r,default:o}}=e;return{value:t,label:n,attributes:r,default:o}}))}function m(e){const{values:t,children:n}=e;return(0,o.useMemo)((()=>{const e=t??d(n);return function(e){const t=(0,c.l)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[t,n])}function f(e){let{value:t,tabValues:n}=e;return n.some((e=>e.value===t))}function p(e){let{queryString:t=!1,groupId:n}=e;const r=(0,l.k6)(),a=function(e){let{queryString:t=!1,groupId:n}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!n)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:t,groupId:n});return[(0,s._X)(a),(0,o.useCallback)((e=>{if(!a)return;const t=new URLSearchParams(r.location.search);t.set(a,e),r.replace({...r.location,search:t.toString()})}),[a,r])]}function h(e){const{defaultValue:t,queryString:n=!1,groupId:r}=e,a=m(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:t,tabValues:n}=e;if(0===n.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!f({value:t,tabValues:n}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const r=n.find((e=>e.default))??n[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:a}))),[s,c]=p({queryString:n,groupId:r}),[d,h]=function(e){let{groupId:t}=e;const n=function(e){return e?`docusaurus.tab.${e}`:null}(t),[r,a]=(0,u.Nk)(n);return[r,(0,o.useCallback)((e=>{n&&a.set(e)}),[n,a])]}({groupId:r}),v=(()=>{const e=s??d;return f({value:e,tabValues:a})?e:null})();(0,o.useLayoutEffect)((()=>{v&&l(v)}),[v]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!f({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),h(e)}),[c,h,a]),tabValues:a}}var v=n(51048);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function b(e){let{className:t,block:n,selectedValue:l,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:d}=(0,i.o5)(),m=e=>{const t=e.currentTarget,n=u.indexOf(t),r=c[n].value;r!==l&&(d(t),s(r))},f=e=>{let t=null;switch(e.key){case"Enter":m(e);break;case"ArrowRight":{const n=u.indexOf(e.currentTarget)+1;t=u[n]??u[0];break}case"ArrowLeft":{const n=u.indexOf(e.currentTarget)-1;t=u[n]??u[u.length-1];break}}t?.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.Z)("tabs",{"tabs--block":n},t)},c.map((e=>{let{value:t,label:n,attributes:i}=e;return o.createElement("li",(0,r.Z)({role:"tab",tabIndex:l===t?0:-1,"aria-selected":l===t,key:t,ref:e=>u.push(e),onKeyDown:f,onClick:m},i,{className:(0,a.Z)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":l===t})}),n??t)})))}function y(e){let{lazy:t,children:n,selectedValue:r}=e;const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){const e=a.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},a.map(((e,t)=>(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==r}))))}function E(e){const t=h(e);return o.createElement("div",{className:(0,a.Z)("tabs-container",g.tabList)},o.createElement(b,(0,r.Z)({},e,t)),o.createElement(y,(0,r.Z)({},e,t)))}function w(e){const t=(0,v.Z)();return o.createElement(E,(0,r.Z)({key:String(t)},e))}},53852:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(67294),o=n(86010),a=n(83699);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function l(e){let{permalink:t,label:n,count:l}=e;return r.createElement(a.Z,{href:t,className:(0,o.Z)(i.tag,l?i.tagWithCount:i.tagRegular)},n,l&&r.createElement("span",null,l))}},58801:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(67294),o=n(43768);const a=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(a.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(a);if(null===e)throw new o.i6("DocsVersionProvider");return e}},87594:(e,t)=>{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,o,a]=t;if(r&&a){r=parseInt(r),a=parseInt(a);const e=r<a?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(a+=e);for(let t=r;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},83824:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Waypoint:()=>N});var r=n(75068),o=!("undefined"==typeof window||!window.document||!window.document.createElement);var a=void 0;function i(){return void 0===a&&(a=function(){if(!o)return!1;if(!window.addEventListener||!window.removeEventListener||!Object.defineProperty)return!1;var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}}),n=function(){};window.addEventListener("testPassiveEventSupport",n,t),window.removeEventListener("testPassiveEventSupport",n,t)}catch(r){}return e}()),a}function l(e){e.handlers===e.nextHandlers&&(e.nextHandlers=e.handlers.slice())}function s(e){this.target=e,this.events={}}s.prototype.getEventHandlers=function(e,t){var n,r=String(e)+" "+String((n=t)?!0===n?100:(n.capture<<0)+(n.passive<<1)+(n.once<<2):0);return this.events[r]||(this.events[r]={handlers:[],handleEvent:void 0},this.events[r].nextHandlers=this.events[r].handlers),this.events[r]},s.prototype.handleEvent=function(e,t,n){var r=this.getEventHandlers(e,t);r.handlers=r.nextHandlers,r.handlers.forEach((function(e){e&&e(n)}))},s.prototype.add=function(e,t,n){var r=this,o=this.getEventHandlers(e,n);l(o),0===o.nextHandlers.length&&(o.handleEvent=this.handleEvent.bind(this,e,n),this.target.addEventListener(e,o.handleEvent,n)),o.nextHandlers.push(t);var a=!0;return function(){if(a){a=!1,l(o);var i=o.nextHandlers.indexOf(t);o.nextHandlers.splice(i,1),0===o.nextHandlers.length&&(r.target&&r.target.removeEventListener(e,o.handleEvent,n),o.handleEvent=void 0)}}};var c="__consolidated_events_handlers__";function u(e,t,n,r){e[c]||(e[c]=new s(e));var o=function(e){if(e)return i()?e:!!e.capture}(r);return e[c].add(t,n,o)}var d=n(67294),m=n(35834);function f(e,t){var n,r=(n=e,!isNaN(parseFloat(n))&&isFinite(n)?parseFloat(n):"px"===n.slice(-2)?parseFloat(n.slice(0,-2)):void 0);if("number"==typeof r)return r;var o=function(e){if("%"===e.slice(-1))return parseFloat(e.slice(0,-1))/100}(e);return"number"==typeof o?o*t:void 0}var p="above",h="inside",v="below",g="invisible";function b(e){return"string"==typeof e.type}var y;var E=[];function w(e){E.push(e),y||(y=setTimeout((function(){var e;for(y=null;e=E.shift();)e()}),0));var t=!0;return function(){if(t){t=!1;var n=E.indexOf(e);-1!==n&&(E.splice(n,1),!E.length&&y&&(clearTimeout(y),y=null))}}}var k="undefined"!=typeof window,C={debug:!1,scrollableAncestor:void 0,children:void 0,topOffset:"0px",bottomOffset:"0px",horizontal:!1,onEnter:function(){},onLeave:function(){},onPositionChange:function(){},fireOnRapidScroll:!0},N=function(e){function t(t){var n;return(n=e.call(this,t)||this).refElement=function(e){n._ref=e},n}(0,r.Z)(t,e);var o=t.prototype;return o.componentDidMount=function(){var e=this;k&&(this.cancelOnNextTick=w((function(){e.cancelOnNextTick=null;var t=e.props,n=t.children;t.debug;!function(e,t){if(e&&!b(e)&&!t)throw new Error("<Waypoint> needs a DOM element to compute boundaries. The child you passed is neither a DOM element (e.g. <div>) nor does it use the innerRef prop.\n\nSee https://goo.gl/LrBNgw for more info.")}(n,e._ref),e._handleScroll=e._handleScroll.bind(e),e.scrollableAncestor=e._findScrollableAncestor(),e.scrollEventListenerUnsubscribe=u(e.scrollableAncestor,"scroll",e._handleScroll,{passive:!0}),e.resizeEventListenerUnsubscribe=u(window,"resize",e._handleScroll,{passive:!0}),e._handleScroll(null)})))},o.componentDidUpdate=function(){var e=this;k&&this.scrollableAncestor&&(this.cancelOnNextTick||(this.cancelOnNextTick=w((function(){e.cancelOnNextTick=null,e._handleScroll(null)}))))},o.componentWillUnmount=function(){k&&(this.scrollEventListenerUnsubscribe&&this.scrollEventListenerUnsubscribe(),this.resizeEventListenerUnsubscribe&&this.resizeEventListenerUnsubscribe(),this.cancelOnNextTick&&this.cancelOnNextTick())},o._findScrollableAncestor=function(){var e=this.props,t=e.horizontal,r=e.scrollableAncestor;if(r)return function(e){return"window"===e?n.g.window:e}(r);for(var o=this._ref;o.parentNode;){if((o=o.parentNode)===document.body)return window;var a=window.getComputedStyle(o),i=(t?a.getPropertyValue("overflow-x"):a.getPropertyValue("overflow-y"))||a.getPropertyValue("overflow");if("auto"===i||"scroll"===i||"overlay"===i)return o}return window},o._handleScroll=function(e){if(this._ref){var t=this._getBounds(),n=function(e){return e.viewportBottom-e.viewportTop==0?g:e.viewportTop<=e.waypointTop&&e.waypointTop<=e.viewportBottom||e.viewportTop<=e.waypointBottom&&e.waypointBottom<=e.viewportBottom||e.waypointTop<=e.viewportTop&&e.viewportBottom<=e.waypointBottom?h:e.viewportBottom<e.waypointTop?v:e.waypointTop<e.viewportTop?p:g}(t),r=this._previousPosition,o=this.props,a=(o.debug,o.onPositionChange),i=o.onEnter,l=o.onLeave,s=o.fireOnRapidScroll;if(this._previousPosition=n,r!==n){var c={currentPosition:n,previousPosition:r,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom};a.call(this,c),n===h?i.call(this,c):r===h&&l.call(this,c),s&&(r===v&&n===p||r===p&&n===v)&&(i.call(this,{currentPosition:h,previousPosition:r,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom}),l.call(this,{currentPosition:n,previousPosition:h,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom}))}}},o._getBounds=function(){var e,t,n=this.props,r=n.horizontal,o=(n.debug,this._ref.getBoundingClientRect()),a=o.left,i=o.top,l=o.right,s=o.bottom,c=r?a:i,u=r?l:s;this.scrollableAncestor===window?(e=r?window.innerWidth:window.innerHeight,t=0):(e=r?this.scrollableAncestor.offsetWidth:this.scrollableAncestor.offsetHeight,t=r?this.scrollableAncestor.getBoundingClientRect().left:this.scrollableAncestor.getBoundingClientRect().top);var d=this.props,m=d.bottomOffset;return{waypointTop:c,waypointBottom:u,viewportTop:t+f(d.topOffset,e),viewportBottom:t+e-f(m,e)}},o.render=function(){var e=this,t=this.props.children;if(!t)return d.createElement("span",{ref:this.refElement,style:{fontSize:0}});if(b(t)||(0,m.isForwardRef)(t)){return d.cloneElement(t,{ref:function(n){e.refElement(n),t.ref&&("function"==typeof t.ref?t.ref(n):t.ref.current=n)}})}return d.cloneElement(t,{innerRef:this.refElement})},t}(d.PureComponent);N.above=p,N.below=v,N.inside=h,N.invisible=g,N.defaultProps=C,N.displayName="Waypoint"},25058:(e,t)=>{"use strict";var n,r=Symbol.for("react.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),c=Symbol.for("react.context"),u=Symbol.for("react.server_context"),d=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),v=Symbol.for("react.offscreen");function g(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case a:case l:case i:case m:case f:return e;default:switch(e=e&&e.$$typeof){case u:case c:case d:case h:case p:case s:return e;default:return t}}case o:return t}}}n=Symbol.for("react.module.reference"),t.isForwardRef=function(e){return g(e)===d}},35834:(e,t,n)=>{"use strict";e.exports=n(25058)}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9059.f590360f.js.LICENSE.txt b/packages/noco-docs/dist/assets/js/9059.f590360f.js.LICENSE.txt new file mode 100644 index 0000000000..53dcf70ce5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9059.f590360f.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/packages/noco-docs/dist/assets/js/90e43058.f9839c0b.js b/packages/noco-docs/dist/assets/js/90e43058.f9839c0b.js new file mode 100644 index 0000000000..8b383e2034 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/90e43058.f9839c0b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7023],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>c});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?i(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function d(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},i=Object.keys(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)a=i[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),p=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},m=function(t){var e=p(t.components);return n.createElement(o.Provider,{value:e},t.children)},k="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},g=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,m=d(t,["components","mdxType","originalType","parentName"]),k=p(a),g=r,c=k["".concat(o,".").concat(g)]||k[g]||N[g]||i;return a?n.createElement(c,l(l({ref:e},m),{},{components:a})):n.createElement(c,l({ref:e},m))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=g;var d={};for(var o in e)hasOwnProperty.call(e,o)&&(d[o]=e[o]);d.originalType=t,d[k]="string"==typeof t?t:r,l[1]=d;for(var p=2;p<i;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}g.displayName="MDXCreateElement"},79613:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>o,contentTitle:()=>l,default:()=>N,frontMatter:()=>i,metadata:()=>d,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const i={title:"Keyboard Maneuver",description:"Keyboard shortcuts"},l=void 0,d={unversionedId:"setup-and-usages/keyboard-maneuver",id:"version-0.109.7/setup-and-usages/keyboard-maneuver",title:"Keyboard Maneuver",description:"Keyboard shortcuts",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/150.keyboard-maneuver.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/keyboard-maneuver",permalink:"/0.109.7/setup-and-usages/keyboard-maneuver",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/150.keyboard-maneuver.md",tags:[],version:"0.109.7",sidebarPosition:150,frontMatter:{title:"Keyboard Maneuver",description:"Keyboard shortcuts"},sidebar:"tutorialSidebar",previous:{title:"Share View",permalink:"/0.109.7/setup-and-usages/share-view"},next:{title:"Views",permalink:"/0.109.7/setup-and-usages/views"}},o={},p=[{value:"Shortcuts",id:"shortcuts",level:2},{value:"Grid view",id:"grid-view",level:2},{value:"Column type specific",id:"column-type-specific",level:2},{value:"Expanded form",id:"expanded-form",level:2}],m={toc:p},k="wrapper";function N(t){let{components:e,...a}=t;return(0,r.kt)(k,(0,n.Z)({},m,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"shortcuts"},"Shortcuts"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},"t")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Insert new table")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},"r")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Insert new row")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},"c")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Insert new column")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},"f")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Toggle fullscreen mode")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},"i")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Invite a member to team")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"ALT")," ",(0,r.kt)("inlineCode",{parentName:"td"},",")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Open ",(0,r.kt)("inlineCode",{parentName:"td"},"Team & Settings")," menu")))),(0,r.kt)("h2",{id:"grid-view"},"Grid view"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to first record in this column (in same page)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Jump to last record in this column (in same page)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,r.kt)("inlineCode",{parentName:"td"},"C")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Copy cell contents")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Switch cell in focus to EDIT mode; opens modal/picker if cell is associated with one")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Esc")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Exit cell EDIT mode")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Delete")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Clear cell")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Space")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Expand current row")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"General cell navigation")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Tab")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move to next cell horizontally; if on last cell, move to next row beginning")))),(0,r.kt)("h2",{id:"column-type-specific"},"Column type specific"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Datatype"),(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Text / Numerical cells"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2190")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2192")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move cursor to the left / right")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move cursor to the beginning / end")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Single Select"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Select option")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Multi Select"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Select / deselect option")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"DateTime"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Ctrl")," ",(0,r.kt)("inlineCode",{parentName:"td"},";")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Select current date time")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Link"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,r.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Move between options")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"}),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Link current selection")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Checkbox"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Toggle")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Rating"),(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"<0 ~ Max>")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Enter number to toggle rating")))),(0,r.kt)("h2",{id:"expanded-form"},"Expanded form"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"right"},(0,r.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,r.kt)("inlineCode",{parentName:"td"},"Enter")),(0,r.kt)("td",{parentName:"tr",align:"left"},"Save current expanded form item")))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9329f711.4f19abf4.js b/packages/noco-docs/dist/assets/js/9329f711.4f19abf4.js new file mode 100644 index 0000000000..71ced77e7c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9329f711.4f19abf4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[753],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=p(n),g=o,m=u["".concat(c,".").concat(g)]||u[g]||f[g]||a;return n?r.createElement(m,i(i({ref:t},s),{},{components:n})):r.createElement(m,i({ref:t},s))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=g;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,i[1]=l;for(var p=2;p<a;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}g.displayName="MDXCreateElement"},20980:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const a={title:"Profile page",description:"This article explains how to manage your profile page.",tags:["Account Settings","Profile","Member"],keywords:["Profile page","Profile settings","Profile name"]},i=void 0,l={unversionedId:"account-settings/profile-page",id:"account-settings/profile-page",title:"Profile page",description:"This article explains how to manage your profile page.",source:"@site/docs/140.account-settings/010.profile-page.md",sourceDirName:"140.account-settings",slug:"/account-settings/profile-page",permalink:"/account-settings/profile-page",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/140.account-settings/010.profile-page.md",tags:[{label:"Account Settings",permalink:"/tags/account-settings"},{label:"Profile",permalink:"/tags/profile"},{label:"Member",permalink:"/tags/member"}],version:"current",sidebarPosition:10,frontMatter:{title:"Profile page",description:"This article explains how to manage your profile page.",tags:["Account Settings","Profile","Member"],keywords:["Profile page","Profile settings","Profile name"]},sidebar:"tutorialSidebar",previous:{title:"Actions on webhook",permalink:"/automation/webhook/actions-on-webhook"},next:{title:"API tokens",permalink:"/account-settings/api-tokens"}},c={},p=[],s={toc:p},u="wrapper";function f(e){let{components:t,...a}=e;return(0,o.kt)(u,(0,r.Z)({},s,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Profile page is the place where you can manage your profile information. Currently, only a custom username can be setup as part of profile configuration. To access your profile page,"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"User menu")," in the bottom left corner of the sidebar, "),(0,o.kt)("li",{parentName:"ol"},"Select ",(0,o.kt)("inlineCode",{parentName:"li"},"Account Settings")," from the dropdown"),(0,o.kt)("li",{parentName:"ol"},"Change ",(0,o.kt)("inlineCode",{parentName:"li"},"Profile name")," "),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save")," button to save the changes")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"profile page",src:n(80992).Z,width:"2432",height:"1388"})," "),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"profile page",src:n(91112).Z,width:"2432",height:"1386"})))}f.isMDXComponent=!0},80992:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/account-settings-3f8b281c933be2349ddb19f0fa8660e8.png"},91112:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/profile-page-a57e61bb64613b60a0567d3589307653.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/935f2afb.56686250.js b/packages/noco-docs/dist/assets/js/935f2afb.56686250.js new file mode 100644 index 0000000000..e7a42ead41 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/935f2afb.56686250.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Latest","banner":null,"badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Welcome","href":"/","docId":"index"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Quick start","href":"/getting-started/quick-start","docId":"getting-started/quick-start"},{"type":"link","label":"NocoDB terminologies","href":"/getting-started/terminologies","docId":"getting-started/terminologies"},{"type":"link","label":"Keyboard shortcuts","href":"/getting-started/keyboard-shortcuts","docId":"getting-started/keyboard-shortcuts"},{"type":"category","label":"In Open Source","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Installation","href":"/getting-started/self-hosted/installation","docId":"getting-started/self-hosted/installation"},{"type":"link","label":"Environment variables","href":"/getting-started/self-hosted/environment-variables","docId":"getting-started/self-hosted/environment-variables"},{"type":"link","label":"Upgrading","href":"/getting-started/self-hosted/upgrading","docId":"getting-started/self-hosted/upgrading"}]}]},{"type":"category","label":"Workspaces","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Workspace overview","href":"/workspaces/workspace-overview","docId":"workspaces/workspace-overview"},{"type":"link","label":"Create workspace","href":"/workspaces/create-workspace","docId":"workspaces/create-workspace"},{"type":"link","label":"Workspace collaboration","href":"/workspaces/workspace-collaboration","docId":"workspaces/workspace-collaboration"},{"type":"link","label":"Actions on workspace","href":"/workspaces/actions-on-workspace","docId":"workspaces/actions-on-workspace"}]},{"type":"category","label":"Bases","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Base overview","href":"/bases/base-overview","docId":"bases/base-overview"},{"type":"link","label":"Create base","href":"/bases/create-base","docId":"bases/create-base"},{"type":"link","label":"Import Airtable to NocoDB","href":"/bases/import-base-from-airtable","docId":"bases/import-base-from-airtable"},{"type":"link","label":"Base collaboration","href":"/bases/base-collaboration","docId":"bases/base-collaboration"},{"type":"link","label":"Share base","href":"/bases/share-base","docId":"bases/share-base"},{"type":"link","label":"Actions on base","href":"/bases/actions-on-base","docId":"bases/actions-on-base"}]},{"type":"category","label":"Tables","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Table overview","href":"/tables/table-overview","docId":"tables/table-overview"},{"type":"link","label":"Create empty table","href":"/tables/create-table","docId":"tables/create-table"},{"type":"link","label":"Create table via import","href":"/tables/create-table-via-import","docId":"tables/create-table-via-import"},{"type":"link","label":"Import data into an existing table","href":"/tables/import-data-into-existing-table","docId":"tables/import-data-into-existing-table"},{"type":"link","label":"Actions on table","href":"/tables/actions-on-table","docId":"tables/actions-on-table"}]},{"type":"category","label":"Table operations","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Table operations overview","href":"/table-operations/overview","docId":"table-operations/overview"},{"type":"link","label":"Hide & reorder fields","href":"/table-operations/field-operations","docId":"table-operations/field-operations"},{"type":"link","label":"Filtering records","href":"/table-operations/filter","docId":"table-operations/filter"},{"type":"link","label":"Sorting records","href":"/table-operations/sort","docId":"table-operations/sort"},{"type":"link","label":"Grouping records","href":"/table-operations/group-by","docId":"table-operations/group-by"},{"type":"link","label":"Record height","href":"/table-operations/row-height","docId":"table-operations/row-height"},{"type":"link","label":"Search","href":"/table-operations/search","docId":"table-operations/search"},{"type":"link","label":"Download","href":"/table-operations/download","docId":"table-operations/download"}]},{"type":"category","label":"Table Details","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Table details overview","href":"/table-details/table-details-overview","docId":"table-details/table-details-overview"}]},{"type":"category","label":"Fields","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Fields overview","href":"/fields/fields-overview","docId":"fields/fields-overview"},{"type":"link","label":"Primary key","href":"/fields/primary-key","docId":"fields/primary-key"},{"type":"link","label":"Display value","href":"/fields/display-value","docId":"fields/display-value"},{"type":"category","label":"Field types","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Text based","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Single line text","href":"/fields/field-types/text-based/single-line-text","docId":"fields/field-types/text-based/single-line-text"},{"type":"link","label":"Long text","href":"/fields/field-types/text-based/long-text","docId":"fields/field-types/text-based/long-text"},{"type":"link","label":"Email","href":"/fields/field-types/text-based/email","docId":"fields/field-types/text-based/email"},{"type":"link","label":"Phone Number","href":"/fields/field-types/text-based/phonenumber","docId":"fields/field-types/text-based/phonenumber"},{"type":"link","label":"URL","href":"/fields/field-types/text-based/url","docId":"fields/field-types/text-based/url"}]},{"type":"category","label":"Numerical","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Number","href":"/fields/field-types/numerical/number","docId":"fields/field-types/numerical/number"},{"type":"link","label":"Decimal","href":"/fields/field-types/numerical/decimal","docId":"fields/field-types/numerical/decimal"},{"type":"link","label":"Percent","href":"/fields/field-types/numerical/percent","docId":"fields/field-types/numerical/percent"},{"type":"link","label":"Currency","href":"/fields/field-types/numerical/currency","docId":"fields/field-types/numerical/currency"}]},{"type":"category","label":"Select based","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Single Select","href":"/fields/field-types/select-based/single-select","docId":"fields/field-types/select-based/single-select"},{"type":"link","label":"Checkbox","href":"/fields/field-types/select-based/checkbox","docId":"fields/field-types/select-based/checkbox"},{"type":"link","label":"Multi Select","href":"/fields/field-types/select-based/multi-select","docId":"fields/field-types/select-based/multi-select"},{"type":"link","label":"Rating","href":"/fields/field-types/select-based/rating","docId":"fields/field-types/select-based/rating"}]},{"type":"category","label":"Links based","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Links","href":"/fields/field-types/links-based/links","docId":"fields/field-types/links-based/links"},{"type":"link","label":"Lookup","href":"/fields/field-types/links-based/lookup","docId":"fields/field-types/links-based/lookup"},{"type":"link","label":"Rollup","href":"/fields/field-types/links-based/rollup","docId":"fields/field-types/links-based/rollup"}]},{"type":"category","label":"Custom types","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Attachment","href":"/fields/field-types/custom-types/attachment","docId":"fields/field-types/custom-types/attachment"},{"type":"link","label":"QR code","href":"/fields/field-types/custom-types/QR-code","docId":"fields/field-types/custom-types/QR-code"},{"type":"link","label":"Barcode","href":"/fields/field-types/custom-types/barcode","docId":"fields/field-types/custom-types/barcode"},{"type":"link","label":"Geometry","href":"/fields/field-types/custom-types/geometry","docId":"fields/field-types/custom-types/geometry"},{"type":"link","label":"Specific DB type","href":"/fields/field-types/custom-types/specific-db-type","docId":"fields/field-types/custom-types/specific-db-type"},{"type":"link","label":"JSON","href":"/fields/field-types/custom-types/json","docId":"fields/field-types/custom-types/json"}]},{"type":"category","label":"Formula","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Formula","href":"/fields/field-types/formula/formula","docId":"fields/field-types/formula/formula"},{"type":"link","label":"Numeric and Logical Operators","href":"/fields/field-types/formula/operators","docId":"fields/field-types/formula/operators"},{"type":"link","label":"Numeric functions","href":"/fields/field-types/formula/numeric-functions","docId":"fields/field-types/formula/numeric-functions"},{"type":"link","label":"String functions","href":"/fields/field-types/formula/string-functions","docId":"fields/field-types/formula/string-functions"},{"type":"link","label":"Date functions","href":"/fields/field-types/formula/date-functions","docId":"fields/field-types/formula/date-functions"},{"type":"link","label":"Conditional expressions","href":"/fields/field-types/formula/conditional-expressions","docId":"fields/field-types/formula/conditional-expressions"}]},{"type":"category","label":"Date Time based","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Date Time","href":"/fields/field-types/date-time-based/date-time","docId":"fields/field-types/date-time-based/date-time"},{"type":"link","label":"Date","href":"/fields/field-types/date-time-based/date","docId":"fields/field-types/date-time-based/date"},{"type":"link","label":"Time","href":"/fields/field-types/date-time-based/time","docId":"fields/field-types/date-time-based/time"},{"type":"link","label":"Duration","href":"/fields/field-types/date-time-based/duration","docId":"fields/field-types/date-time-based/duration"}]}]},{"type":"link","label":"Multi-field editor","href":"/fields/multi-fields-editor","docId":"fields/multi-fields-editor"},{"type":"link","label":"Actions on field","href":"/fields/actions-on-field","docId":"fields/actions-on-field"}]},{"type":"category","label":"Records","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Records overview","href":"/records/records-overview","docId":"records/records-overview"},{"type":"link","label":"Create record","href":"/records/create-record","docId":"records/create-record"},{"type":"link","label":"Expanded record","href":"/records/expand-record","docId":"records/expand-record"},{"type":"link","label":"Actions on record","href":"/records/actions-on-record","docId":"records/actions-on-record"}]},{"type":"category","label":"Views","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"View overview","href":"/views/views-overview","docId":"views/views-overview"},{"type":"link","label":"Create view","href":"/views/create-view","docId":"views/create-view"},{"type":"link","label":"Share view","href":"/views/share-view","docId":"views/share-view"},{"type":"category","label":"View types","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Grid","href":"/views/view-types/grid","docId":"views/view-types/grid"},{"type":"link","label":"Gallery","href":"/views/view-types/gallery","docId":"views/view-types/gallery"},{"type":"link","label":"Form","href":"/views/view-types/form","docId":"views/view-types/form"},{"type":"link","label":"Kanban","href":"/views/view-types/kanban","docId":"views/view-types/kanban"}]},{"type":"link","label":"Actions on view","href":"/views/actions-on-view","docId":"views/actions-on-view"}]},{"type":"category","label":"Data sources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Data sources overview","href":"/data-sources/data-source-overview","docId":"data-sources/data-source-overview"},{"type":"link","label":"Connect to a Data source","href":"/data-sources/connect-to-data-source","docId":"data-sources/connect-to-data-source"},{"type":"link","label":"Sync with Data source","href":"/data-sources/sync-with-data-source","docId":"data-sources/sync-with-data-source"},{"type":"link","label":"Actions on Data sources","href":"/data-sources/actions-on-data-sources","docId":"data-sources/actions-on-data-sources"}]},{"type":"category","label":"Roles and permissions","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Roles & permissions overview","href":"/roles-and-permissions/roles-permissions-overview","docId":"roles-and-permissions/roles-permissions-overview"}]},{"type":"category","label":"Collaboration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Collaboration overview","href":"/collaboration/collaboration-overview","docId":"collaboration/collaboration-overview"},{"type":"link","label":"Workspace collaboration","href":"/collaboration/workspace-collaboration","docId":"collaboration/workspace-collaboration"},{"type":"link","label":"Base collaboration","href":"/collaboration/base-collaboration","docId":"collaboration/base-collaboration"},{"type":"link","label":"Share base","href":"/collaboration/share-base","docId":"collaboration/share-base"},{"type":"link","label":"Share view","href":"/collaboration/share-view","docId":"collaboration/share-view"},{"type":"link","label":"In Open Source","href":"/collaboration/oss-specific-details","docId":"collaboration/oss-specific-details"}]},{"type":"category","label":"Automation","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Webhook","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Webhook overview","href":"/automation/webhook/webhook-overview","docId":"automation/webhook/webhook-overview"},{"type":"link","label":"Create webhook","href":"/automation/webhook/create-webhook","docId":"automation/webhook/create-webhook"},{"type":"link","label":"Actions on webhook","href":"/automation/webhook/actions-on-webhook","docId":"automation/webhook/actions-on-webhook"}]}]},{"type":"category","label":"Account settings","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Profile page","href":"/account-settings/profile-page","docId":"account-settings/profile-page"},{"type":"link","label":"API tokens","href":"/account-settings/api-tokens","docId":"account-settings/api-tokens"},{"type":"link","label":"In Open Source","href":"/account-settings/oss-specific-details","docId":"account-settings/oss-specific-details"}]},{"type":"category","label":"Engineering","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture overview","href":"/engineering/architecture","docId":"engineering/architecture"},{"type":"link","label":"Repository structure","href":"/engineering/repository-structure","docId":"engineering/repository-structure"},{"type":"link","label":"Development setup","href":"/engineering/development-setup","docId":"engineering/development-setup"},{"type":"link","label":"Writing unit tests","href":"/engineering/unit-testing","docId":"engineering/unit-testing"},{"type":"link","label":"Playwright E2E testing","href":"/engineering/playwright","docId":"engineering/playwright"},{"type":"link","label":"Releases & builds","href":"/engineering/builds-and-releases","docId":"engineering/builds-and-releases"},{"type":"link","label":"i18n translation","href":"/engineering/translation","docId":"engineering/translation"},{"type":"link","label":"Writing docs","href":"/engineering/writing-docs","docId":"engineering/writing-docs"}]},{"type":"link","label":"FAQs","href":"/FAQs","docId":"FAQs"}]},"docs":{"account-settings/api-tokens":{"id":"account-settings/api-tokens","title":"API tokens","description":"This article explains how to create and work with API Tokens.","sidebar":"tutorialSidebar"},"account-settings/oss-specific-details":{"id":"account-settings/oss-specific-details","title":"In Open Source","description":"This article explains Account settings specifics in Open source NocoDB.","sidebar":"tutorialSidebar"},"account-settings/profile-page":{"id":"account-settings/profile-page","title":"Profile page","description":"This article explains how to manage your profile page.","sidebar":"tutorialSidebar"},"automation/webhook/actions-on-webhook":{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","sidebar":"tutorialSidebar"},"automation/webhook/create-webhook":{"id":"automation/webhook/create-webhook","title":"Create webhook","description":"Learn how to create a webhook in NocoDB.","sidebar":"tutorialSidebar"},"automation/webhook/webhook-overview":{"id":"automation/webhook/webhook-overview","title":"Webhook overview","description":"Learn how to create, modify and delete webhooks.","sidebar":"tutorialSidebar"},"bases/actions-on-base":{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","sidebar":"tutorialSidebar"},"bases/base-collaboration":{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","sidebar":"tutorialSidebar"},"bases/base-overview":{"id":"bases/base-overview","title":"Base overview","description":"This article explains the concept of bases in NocoDB.","sidebar":"tutorialSidebar"},"bases/create-base":{"id":"bases/create-base","title":"Create base","description":"Learn how to create a base in NocoDB.","sidebar":"tutorialSidebar"},"bases/import-base-from-airtable":{"id":"bases/import-base-from-airtable","title":"Import Airtable to NocoDB","description":"A complete import of your Airtable to any MySQL or Postgres databases within minutes","sidebar":"tutorialSidebar"},"bases/share-base":{"id":"bases/share-base","title":"Share base","description":"Procedures to share a base & generating embedded iframe","sidebar":"tutorialSidebar"},"collaboration/base-collaboration":{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","sidebar":"tutorialSidebar"},"collaboration/collaboration-overview":{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","sidebar":"tutorialSidebar"},"collaboration/oss-specific-details":{"id":"collaboration/oss-specific-details","title":"In Open Source","description":"This article explains specifics of User management in OSS.","sidebar":"tutorialSidebar"},"collaboration/share-base":{"id":"collaboration/share-base","title":"Share base","description":"Procedures to share a base publicly & generating embedded iframe","sidebar":"tutorialSidebar"},"collaboration/share-view":{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","sidebar":"tutorialSidebar"},"collaboration/workspace-collaboration":{"id":"collaboration/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","sidebar":"tutorialSidebar"},"data-sources/actions-on-data-sources":{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","sidebar":"tutorialSidebar"},"data-sources/connect-to-data-source":{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","sidebar":"tutorialSidebar"},"data-sources/data-source-overview":{"id":"data-sources/data-source-overview","title":"Data sources overview","description":"NocoDB Data-Source sync, access control & re-config","sidebar":"tutorialSidebar"},"data-sources/sync-with-data-source":{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","sidebar":"tutorialSidebar"},"engineering/architecture":{"id":"engineering/architecture","title":"Architecture overview","description":"Simple overview of NocoDB architecture","sidebar":"tutorialSidebar"},"engineering/builds-and-releases":{"id":"engineering/builds-and-releases","title":"Releases & builds","description":"NocoDB creates Docker and Binaries for each PR","sidebar":"tutorialSidebar"},"engineering/development-setup":{"id":"engineering/development-setup","title":"Development setup","description":"How to set-up your development environment","sidebar":"tutorialSidebar"},"engineering/playwright":{"id":"engineering/playwright","title":"Playwright E2E testing","description":"Overview to playwright based e2e tests","sidebar":"tutorialSidebar"},"engineering/repository-structure":{"id":"engineering/repository-structure","title":"Repository structure","description":"Repository Structure","sidebar":"tutorialSidebar"},"engineering/translation":{"id":"engineering/translation","title":"i18n translation","description":"Contribute to NocoDB\'s i18n translation","sidebar":"tutorialSidebar"},"engineering/unit-testing":{"id":"engineering/unit-testing","title":"Writing unit tests","description":"Overview to Unit Testing","sidebar":"tutorialSidebar"},"engineering/writing-docs":{"id":"engineering/writing-docs","title":"Writing docs","description":"Overview to writing docs","sidebar":"tutorialSidebar"},"FAQs":{"id":"FAQs","title":"FAQs","description":"General FAQs","sidebar":"tutorialSidebar"},"fields/actions-on-field":{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","sidebar":"tutorialSidebar"},"fields/display-value":{"id":"fields/display-value","title":"Display value","description":"This article explains how to set display value for a table & its use.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/attachment":{"id":"fields/field-types/custom-types/attachment","title":"Attachment","description":"This article explains how to create & work with an Attachment field.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/barcode":{"id":"fields/field-types/custom-types/barcode","title":"Barcode","description":"This article explains how to create & work with a Barcode field.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/geometry":{"id":"fields/field-types/custom-types/geometry","title":"Geometry","description":"This article explains how to create & work with a Geometry field.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/json":{"id":"fields/field-types/custom-types/json","title":"JSON","description":"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/QR-code":{"id":"fields/field-types/custom-types/QR-code","title":"QR code","description":"This article explains how to create & work with a QR code field.","sidebar":"tutorialSidebar"},"fields/field-types/custom-types/specific-db-type":{"id":"fields/field-types/custom-types/specific-db-type","title":"Specific DB type","description":"This article explains how to create & work with a Specific DB Type field.","sidebar":"tutorialSidebar"},"fields/field-types/date-time-based/date":{"id":"fields/field-types/date-time-based/date","title":"Date","description":"This article explains how to create & work with a Date field.","sidebar":"tutorialSidebar"},"fields/field-types/date-time-based/date-time":{"id":"fields/field-types/date-time-based/date-time","title":"Date Time","description":"This article explains how to create & work with a Date Time field.","sidebar":"tutorialSidebar"},"fields/field-types/date-time-based/duration":{"id":"fields/field-types/date-time-based/duration","title":"Duration","description":"This article explains how to create & work with a Duration field.","sidebar":"tutorialSidebar"},"fields/field-types/date-time-based/time":{"id":"fields/field-types/date-time-based/time","title":"Time","description":"This article explains how to create & work with a Time field.","sidebar":"tutorialSidebar"},"fields/field-types/formula/conditional-expressions":{"id":"fields/field-types/formula/conditional-expressions","title":"Conditional expressions","description":"This article explains various conditional expressions that can be used in formula fields.","sidebar":"tutorialSidebar"},"fields/field-types/formula/date-functions":{"id":"fields/field-types/formula/date-functions","title":"Date functions","description":"This article explains various date functions that can be used in formula fields.","sidebar":"tutorialSidebar"},"fields/field-types/formula/formula":{"id":"fields/field-types/formula/formula","title":"Formula","description":"This article explains how to create & work with a Formula field.","sidebar":"tutorialSidebar"},"fields/field-types/formula/numeric-functions":{"id":"fields/field-types/formula/numeric-functions","title":"Numeric functions","description":"This article explains various numeric functions that can be used in formula fields.","sidebar":"tutorialSidebar"},"fields/field-types/formula/operators":{"id":"fields/field-types/formula/operators","title":"Numeric and Logical Operators","description":"This article explains various numeric and logical operators that can be used in formula fields.","sidebar":"tutorialSidebar"},"fields/field-types/formula/string-functions":{"id":"fields/field-types/formula/string-functions","title":"String functions","description":"This article explains various string functions that can be used in formula fields.","sidebar":"tutorialSidebar"},"fields/field-types/links-based/links":{"id":"fields/field-types/links-based/links","title":"Links","description":"This article explains how to create & work with a Links field.","sidebar":"tutorialSidebar"},"fields/field-types/links-based/lookup":{"id":"fields/field-types/links-based/lookup","title":"Lookup","description":"This article explains how to create & work with a Lookup field.","sidebar":"tutorialSidebar"},"fields/field-types/links-based/rollup":{"id":"fields/field-types/links-based/rollup","title":"Rollup","description":"This article explains how to create & work with a Rollup field.","sidebar":"tutorialSidebar"},"fields/field-types/numerical/currency":{"id":"fields/field-types/numerical/currency","title":"Currency","description":"This article explains how to create & work with a Currency field.","sidebar":"tutorialSidebar"},"fields/field-types/numerical/decimal":{"id":"fields/field-types/numerical/decimal","title":"Decimal","description":"This article explains how to create & work with a Decimal field.","sidebar":"tutorialSidebar"},"fields/field-types/numerical/number":{"id":"fields/field-types/numerical/number","title":"Number","description":"This article explains how to create & work with a Number field.","sidebar":"tutorialSidebar"},"fields/field-types/numerical/percent":{"id":"fields/field-types/numerical/percent","title":"Percent","description":"This article explains how to create & work with a Percent field.","sidebar":"tutorialSidebar"},"fields/field-types/select-based/checkbox":{"id":"fields/field-types/select-based/checkbox","title":"Checkbox","description":"This article explains how to create & work with a Checkbox field.","sidebar":"tutorialSidebar"},"fields/field-types/select-based/multi-select":{"id":"fields/field-types/select-based/multi-select","title":"Multi Select","description":"This article explains how to create & work with a Multi select field.","sidebar":"tutorialSidebar"},"fields/field-types/select-based/rating":{"id":"fields/field-types/select-based/rating","title":"Rating","description":"This article explains how to create & work with a Rating field.","sidebar":"tutorialSidebar"},"fields/field-types/select-based/single-select":{"id":"fields/field-types/select-based/single-select","title":"Single Select","description":"This article explains how to create & work with a Single select field.","sidebar":"tutorialSidebar"},"fields/field-types/text-based/email":{"id":"fields/field-types/text-based/email","title":"Email","description":"This article explains how to create & work with an Email field.","sidebar":"tutorialSidebar"},"fields/field-types/text-based/long-text":{"id":"fields/field-types/text-based/long-text","title":"Long text","description":"This article explains how to create & work with a Long text field.","sidebar":"tutorialSidebar"},"fields/field-types/text-based/phonenumber":{"id":"fields/field-types/text-based/phonenumber","title":"Phone Number","description":"This article explains how to create & work with a Phone number field.","sidebar":"tutorialSidebar"},"fields/field-types/text-based/single-line-text":{"id":"fields/field-types/text-based/single-line-text","title":"Single line text","description":"This article explains how to create & work with a Single line text field.","sidebar":"tutorialSidebar"},"fields/field-types/text-based/url":{"id":"fields/field-types/text-based/url","title":"URL","description":"This article explains how to create & work with an URL field.","sidebar":"tutorialSidebar"},"fields/fields-overview":{"id":"fields/fields-overview","title":"Fields overview","description":"This article discusses various field types that NocoDB offers.","sidebar":"tutorialSidebar"},"fields/multi-fields-editor":{"id":"fields/multi-fields-editor","title":"Multi-field editor","description":"Understanding use of multi-field editor in NocoDB!","sidebar":"tutorialSidebar"},"fields/primary-key":{"id":"fields/primary-key","title":"Primary key","description":"This article explains what a primary key is and how it is used in NocoDB.","sidebar":"tutorialSidebar"},"getting-started/keyboard-shortcuts":{"id":"getting-started/keyboard-shortcuts","title":"Keyboard shortcuts","description":"Quick Actions","sidebar":"tutorialSidebar"},"getting-started/quick-start":{"id":"getting-started/quick-start","title":"Quick start","description":"NocoDB offers you the flexibility of two distinct variants: self-hosted and SaaS (cloud-hosted). In this section, we\'ll walk you through the initial steps to embark on your NocoDB journey, whether you choose to set it up on your own infrastructure or opt for the convenience of our cloud-hosted service. Let\'s dive in and unlock the potential of NocoDB for your data management needs.","sidebar":"tutorialSidebar"},"getting-started/self-hosted/environment-variables":{"id":"getting-started/self-hosted/environment-variables","title":"Environment variables","description":"Environment Variables for NocoDB!","sidebar":"tutorialSidebar"},"getting-started/self-hosted/installation":{"id":"getting-started/self-hosted/installation","title":"Installation","description":"Simple installation - takes about three minutes!","sidebar":"tutorialSidebar"},"getting-started/self-hosted/upgrading":{"id":"getting-started/self-hosted/upgrading","title":"Upgrading","description":"Upgrading NocoDB : Docker, Node and Homebrew!","sidebar":"tutorialSidebar"},"getting-started/terminologies":{"id":"getting-started/terminologies","title":"NocoDB terminologies","description":"To maximize your use of NocoDB, it\'s beneficial to become familiar with some common terms.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"NocoDB Documentation","sidebar":"tutorialSidebar"},"records/actions-on-record":{"id":"records/actions-on-record","title":"Actions on record","description":"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.","sidebar":"tutorialSidebar"},"records/create-record":{"id":"records/create-record","title":"Create record","description":"Learn how to create a record in NocoDB.","sidebar":"tutorialSidebar"},"records/expand-record":{"id":"records/expand-record","title":"Expanded record","description":"Learn how to expand a record & work with it in NocoDB.","sidebar":"tutorialSidebar"},"records/records-overview":{"id":"records/records-overview","title":"Records overview","description":"Learn how to create, import, and manage records in NocoDB.","sidebar":"tutorialSidebar"},"roles-and-permissions/roles-permissions-overview":{"id":"roles-and-permissions/roles-permissions-overview","title":"Roles & permissions overview","description":"Learn about roles and permissions in NocoDB.","sidebar":"tutorialSidebar"},"table-details/table-details-overview":{"id":"table-details/table-details-overview","title":"Table details overview","description":"Table details overview","sidebar":"tutorialSidebar"},"table-operations/download":{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","sidebar":"tutorialSidebar"},"table-operations/field-operations":{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/filter":{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/group-by":{"id":"table-operations/group-by","title":"Grouping records","description":"Learn how to group records in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/overview":{"id":"table-operations/overview","title":"Table operations overview","description":"Learn how to work with filters, sort, group by, and more in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/row-height":{"id":"table-operations/row-height","title":"Record height","description":"Learn how to adjust the height of records in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/search":{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","sidebar":"tutorialSidebar"},"table-operations/sort":{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","sidebar":"tutorialSidebar"},"tables/actions-on-table":{"id":"tables/actions-on-table","title":"Actions on table","description":"Learn how to rename, duplicate, and delete a table in NocoDB.","sidebar":"tutorialSidebar"},"tables/create-table":{"id":"tables/create-table","title":"Create empty table","description":"Learn how to create a table in NocoDB.","sidebar":"tutorialSidebar"},"tables/create-table-via-import":{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","sidebar":"tutorialSidebar"},"tables/import-data-into-existing-table":{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","sidebar":"tutorialSidebar"},"tables/table-overview":{"id":"tables/table-overview","title":"Table overview","description":"Learn how to create, import, and manage tables in NocoDB.","sidebar":"tutorialSidebar"},"views/actions-on-view":{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","sidebar":"tutorialSidebar"},"views/create-view":{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","sidebar":"tutorialSidebar"},"views/share-view":{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","sidebar":"tutorialSidebar"},"views/view-types/form":{"id":"views/view-types/form","title":"Form","description":"Learn how to create, import, and manage forms in NocoDB.","sidebar":"tutorialSidebar"},"views/view-types/gallery":{"id":"views/view-types/gallery","title":"Gallery","description":"Learn how to work with gallery view in NocoDB.","sidebar":"tutorialSidebar"},"views/view-types/grid":{"id":"views/view-types/grid","title":"Grid","description":"Learn how to work with grid view in NocoDB.","sidebar":"tutorialSidebar"},"views/view-types/kanban":{"id":"views/view-types/kanban","title":"Kanban","description":"Learn how to work with kanban view in NocoDB.","sidebar":"tutorialSidebar"},"views/views-overview":{"id":"views/views-overview","title":"View overview","description":"Understanding Views in NocoDB!","sidebar":"tutorialSidebar"},"workspaces/actions-on-workspace":{"id":"workspaces/actions-on-workspace","title":"Actions on workspace","description":"This article explains how to rename or delete a workspace.","sidebar":"tutorialSidebar"},"workspaces/create-workspace":{"id":"workspaces/create-workspace","title":"Create workspace","description":"Learn how to create a workspace in NocoDB","sidebar":"tutorialSidebar"},"workspaces/workspace-collaboration":{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","sidebar":"tutorialSidebar"},"workspaces/workspace-overview":{"id":"workspaces/workspace-overview","title":"Workspace overview","description":"This article briefs the concept of workspaces in NocoDB.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/95677701.42b2bf38.js b/packages/noco-docs/dist/assets/js/95677701.42b2bf38.js new file mode 100644 index 0000000000..8935d7b327 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/95677701.42b2bf38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1174],{44721:o=>{o.exports=JSON.parse('{"label":"Group by","permalink":"/tags/group-by","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/group-by","title":"Grouping records","description":"Learn how to group records in NocoDB.","permalink":"/table-operations/group-by"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/95a14fd1.51597f7e.js b/packages/noco-docs/dist/assets/js/95a14fd1.51597f7e.js new file mode 100644 index 0000000000..f566763f59 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/95a14fd1.51597f7e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9518],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var p=o.createContext({}),s=function(e){var t=o.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},c=function(e){var t=s(e.components);return o.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},g=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(r),g=n,b=u["".concat(p,".").concat(g)]||u[g]||d[g]||i;return r?o.createElement(b,a(a({ref:t},c),{},{components:r})):o.createElement(b,a({ref:t},c))}));function b(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,a=new Array(i);a[0]=g;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:n,a[1]=l;for(var s=2;s<i;s++)a[s]=r[s];return o.createElement.apply(null,a)}return o.createElement.apply(null,r)}g.displayName="MDXCreateElement"},52119:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=r(87462),n=(r(67294),r(3905));const i={title:"Grouping records",description:"Learn how to group records in NocoDB.",tags:["Table operations","Group by","Grid view"],keywords:["NocoDB table group by","group by field","group By'grouping records","grouping","group by in table"]},a=void 0,l={unversionedId:"table-operations/group-by",id:"table-operations/group-by",title:"Grouping records",description:"Learn how to group records in NocoDB.",source:"@site/docs/060.table-operations/050.group-by.md",sourceDirName:"060.table-operations",slug:"/table-operations/group-by",permalink:"/table-operations/group-by",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/050.group-by.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Group by",permalink:"/tags/group-by"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:50,frontMatter:{title:"Grouping records",description:"Learn how to group records in NocoDB.",tags:["Table operations","Group by","Grid view"],keywords:["NocoDB table group by","group by field","group By'grouping records","grouping","group by in table"]},sidebar:"tutorialSidebar",previous:{title:"Sorting records",permalink:"/table-operations/sort"},next:{title:"Record height",permalink:"/table-operations/row-height"}},p={},s=[{value:"Adding or Editing Groups",id:"adding-or-editing-groups",level:3},{value:"Deleting Groups",id:"deleting-groups",level:3},{value:"Related topics",id:"related-topics",level:3}],c={toc:s},u="wrapper";function d(e){let{components:t,...i}=e;return(0,n.kt)(u,(0,o.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Grouping records in NocoDB allows for efficient categorization of data into specific ",(0,n.kt)("inlineCode",{parentName:"p"},"Groups")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"Subgroups.")," NocoDB supports three levels of record segregation, providing a powerful organizational tool."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Group By",src:r(47138).Z,width:"2306",height:"956"})),(0,n.kt)("h3",{id:"adding-or-editing-groups"},"Adding or Editing Groups"),(0,n.kt)("p",null,"To create or modify a grouping in NocoDB, follow these steps:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Group By")," in the toolbar."),(0,n.kt)("li",{parentName:"ol"},"Choose the field by which you want to group the records."),(0,n.kt)("li",{parentName:"ol"},"Optionally, you can sort the groups in ascending or descending order.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Group By",src:r(76919).Z,width:"2306",height:"956"})),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"You can add subgroups with up to three levels to further refine your categorization.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Group By",src:r(48197).Z,width:"2304",height:"1282"})),(0,n.kt)("h3",{id:"deleting-groups"},"Deleting Groups"),(0,n.kt)("p",null,"To remove a grouping in NocoDB, take these actions:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Group By")," in the toolbar."),(0,n.kt)("li",{parentName:"ol"},"Locate the bin icon to the right of the group you wish to delete and click on it.")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"To disable ",(0,n.kt)("inlineCode",{parentName:"p"},"Group By")," and return to the standard spreadsheet grid view, you must remove all configured groups.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Group By",src:r(98955).Z,width:"2304",height:"1282"})),(0,n.kt)("h3",{id:"related-topics"},"Related topics"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"row-height"},"Row height")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"download"},"Download"))))}d.isMDXComponent=!0},47138:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/group-by-1-9fca54ae46eb7c74e888a44d49416e9c.png"},76919:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/group-by-create-903d7ed5fc17d47bcf49b5c84f201f80.png"},98955:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/group-by-delete-2bb963126a68838d8c7dc51e7cf139bb.png"},48197:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/group-by-nested-68c0f8159f38c76343ee6905c701fd5e.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/985d43d9.74530544.js b/packages/noco-docs/dist/assets/js/985d43d9.74530544.js new file mode 100644 index 0000000000..663331f4aa --- /dev/null +++ b/packages/noco-docs/dist/assets/js/985d43d9.74530544.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1196],{12322:e=>{e.exports=JSON.parse('{"label":"Tables","permalink":"/tags/tables","allTagsPath":"/tags","count":5,"items":[{"id":"tables/actions-on-table","title":"Actions on table","description":"Learn how to rename, duplicate, and delete a table in NocoDB.","permalink":"/tables/actions-on-table"},{"id":"tables/create-table","title":"Create empty table","description":"Learn how to create a table in NocoDB.","permalink":"/tables/create-table"},{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","permalink":"/tables/create-table-via-import"},{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","permalink":"/tables/import-data-into-existing-table"},{"id":"tables/table-overview","title":"Table overview","description":"Learn how to create, import, and manage tables in NocoDB.","permalink":"/tables/table-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/98de4c79.ccac5542.js b/packages/noco-docs/dist/assets/js/98de4c79.ccac5542.js new file mode 100644 index 0000000000..ba0d3da15c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/98de4c79.ccac5542.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9893],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var d=r.createContext({}),p=function(e){var t=r.useContext(d),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},u=function(e){var t=p(e.components);return r.createElement(d.Provider,{value:t},e.children)},m="mdxType",s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,d=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(a),c=n,f=m["".concat(d,".").concat(c)]||m[c]||s[c]||l;return a?r.createElement(f,i(i({ref:t},u),{},{components:a})):r.createElement(f,i({ref:t},u))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[m]="string"==typeof e?e:n,i[1]=o;for(var p=2;p<l;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}c.displayName="MDXCreateElement"},97481:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>s,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Numeric and Logical Operators",description:"This article explains various numeric and logical operators that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Numeric operators","Logical operators"]},i=void 0,o={unversionedId:"fields/field-types/formula/operators",id:"fields/field-types/formula/operators",title:"Numeric and Logical Operators",description:"This article explains various numeric and logical operators that can be used in formula fields.",source:"@site/docs/070.fields/040.field-types/060.formula/015.operators.md",sourceDirName:"070.fields/040.field-types/060.formula",slug:"/fields/field-types/formula/operators",permalink:"/fields/field-types/formula/operators",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/060.formula/015.operators.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Formula",permalink:"/tags/formula"}],version:"current",sidebarPosition:15,frontMatter:{title:"Numeric and Logical Operators",description:"This article explains various numeric and logical operators that can be used in formula fields.",tags:["Fields","Field types","Formula"],keywords:["Fields","Field types","Formula","Create formula field","Numeric operators","Logical operators"]},sidebar:"tutorialSidebar",previous:{title:"Formula",permalink:"/fields/field-types/formula/formula"},next:{title:"Numeric functions",permalink:"/fields/field-types/formula/numeric-functions"}},d={},p=[{value:"Numeric operators",id:"numeric-operators",level:3},{value:"Logical operators",id:"logical-operators",level:3},{value:"Related Articles",id:"related-articles",level:2}],u={toc:p},m="wrapper";function s(e){let{components:t,...a}=e;return(0,n.kt)(m,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h3",{id:"numeric-operators"},"Numeric operators"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Operator"),(0,n.kt)("th",{parentName:"tr",align:null},"Sample"),(0,n.kt)("th",{parentName:"tr",align:null},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"+")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} + {field2} + 2")),(0,n.kt)("td",{parentName:"tr",align:null},"Addition of numeric values")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"-")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} - {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Subtraction of numeric values")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"*")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} * {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Multiplication of numeric values")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"/")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} / {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Division of numeric values")))),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("p",{parentName:"admonition"},"To change the order of arithmetic operation, you can use round bracket parenthesis ().",(0,n.kt)("br",{parentName:"p"}),"\n","Example: ({field1} + ({field2} * {field3}) / (3 - $field4$ ))")),(0,n.kt)("h3",{id:"logical-operators"},"Logical operators"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Operator"),(0,n.kt)("th",{parentName:"tr",align:null},"Sample"),(0,n.kt)("th",{parentName:"tr",align:null},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"<")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} < {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Less than")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},">")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} > {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Greater than")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"<=")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} <= {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Less than or equal to")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},">=")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} >= {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Greater than or equal to")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"==")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} == {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Equal to")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"!=")),(0,n.kt)("td",{parentName:"tr",align:null},(0,n.kt)("inlineCode",{parentName:"td"},"{field1} != {field2}")),(0,n.kt)("td",{parentName:"tr",align:null},"Not equal to")))),(0,n.kt)("h2",{id:"related-articles"},"Related Articles"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/numeric-functions"},"Numeric Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/string-functions"},"String Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/date-functions"},"Date Functions")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/formula/conditional-expressions"},"Conditional Expressions"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9906c9d3.22de1286.js b/packages/noco-docs/dist/assets/js/9906c9d3.22de1286.js new file mode 100644 index 0000000000..e4069eabde --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9906c9d3.22de1286.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7661],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>g});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},r=Object.keys(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var o=n.createContext({}),p=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(o.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(a),h=i,g=d["".concat(o,".").concat(h)]||d[h]||u[h]||r;return a?n.createElement(g,l(l({ref:t},c),{},{components:a})):n.createElement(g,l({ref:t},c))}));function g(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,l=new Array(r);l[0]=h;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s[d]="string"==typeof e?e:i,l[1]=s;for(var p=2;p<r;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},25300:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var n=a(87462),i=(a(67294),a(3905));const r={title:"Playwright E2E testing",description:"Overview to playwright based e2e tests",tags:["Engineering"]},l=void 0,s={unversionedId:"engineering/playwright",id:"engineering/playwright",title:"Playwright E2E testing",description:"Overview to playwright based e2e tests",source:"@site/docs/150.engineering/050.playwright.md",sourceDirName:"150.engineering",slug:"/engineering/playwright",permalink:"/engineering/playwright",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/150.engineering/050.playwright.md",tags:[{label:"Engineering",permalink:"/tags/engineering"}],version:"current",sidebarPosition:50,frontMatter:{title:"Playwright E2E testing",description:"Overview to playwright based e2e tests",tags:["Engineering"]},sidebar:"tutorialSidebar",previous:{title:"Writing unit tests",permalink:"/engineering/unit-testing"},next:{title:"Releases & builds",permalink:"/engineering/builds-and-releases"}},o={},p=[{value:"How to run tests",id:"how-to-run-tests",level:2},{value:"Run Test Server",id:"run-test-server",level:3},{value:"Running all tests",id:"running-all-tests",level:3},{value:"Running individual tests",id:"running-individual-tests",level:3},{value:"Concepts",id:"concepts",level:2},{value:"Independent tests",id:"independent-tests",level:3},{value:"What to test",id:"what-to-test",level:3},{value:"Playwright",id:"playwright",level:3},{value:"Page Objects",id:"page-objects",level:2},{value:"Writing a test",id:"writing-a-test",level:2},{value:"Create a test suite",id:"create-a-test-suite",level:3},{value:"Create a page object",id:"create-a-page-object",level:3},{value:"Writing an action method",id:"writing-an-action-method",level:3},{value:"Writing an assertion/verification method",id:"writing-an-assertionverification-method",level:3},{value:"Tips to avoid flakiness",id:"tips-to-avoid-flakiness",level:2},{value:"Accessing playwright report in the CI",id:"accessing-playwright-report-in-the-ci",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...a}=e;return(0,i.kt)(d,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"how-to-run-tests"},"How to run tests"),(0,i.kt)("p",null,"All the tests reside in ",(0,i.kt)("inlineCode",{parentName:"p"},"tests/playwright")," folder."),(0,i.kt)("p",null,"Make sure to install the dependencies (in the playwright folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm --filter=playwright install\npnpm exec playwright install --with-deps chromium\n")),(0,i.kt)("h3",{id:"run-test-server"},"Run Test Server"),(0,i.kt)("p",null,"Start the backend test server (in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb")," folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm run watch:run:playwright\n")),(0,i.kt)("p",null,"Start the frontend test server (in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nc-gui")," folder):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"NUXT_PAGE_TRANSITION_DISABLE=true pnpm run dev\n")),(0,i.kt)("h3",{id:"running-all-tests"},"Running all tests"),(0,i.kt)("p",null,"For selecting db type, rename ",(0,i.kt)("inlineCode",{parentName:"p"},".env.example")," to ",(0,i.kt)("inlineCode",{parentName:"p"},".env")," and set ",(0,i.kt)("inlineCode",{parentName:"p"},"E2E_DEV_DB_TYPE")," to ",(0,i.kt)("inlineCode",{parentName:"p"},"sqlite"),"(default), ",(0,i.kt)("inlineCode",{parentName:"p"},"mysql")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"pg"),"."),(0,i.kt)("p",null,"headless mode(without opening browser):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm run test\n")),(0,i.kt)("p",null,"with browser:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm run test:debug\n")),(0,i.kt)("p",null,"For setting up mysql(sakila):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose -f ./tests/playwright/scripts/docker-compose-mysql-playwright.yml up -d\n")),(0,i.kt)("p",null,"For setting up postgres(sakila):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose -f ./tests/playwright/scripts/docker-compose-playwright-pg.yml \n")),(0,i.kt)("h3",{id:"running-individual-tests"},"Running individual tests"),(0,i.kt)("p",null,"Add ",(0,i.kt)("inlineCode",{parentName:"p"},".only")," to the test you want to run:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"test.only('should login', async ({ page }) => {\n // ...\n})\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pnpm run test\n")),(0,i.kt)("h2",{id:"concepts"},"Concepts"),(0,i.kt)("h3",{id:"independent-tests"},"Independent tests"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"All tests are independent of each other."),(0,i.kt)("li",{parentName:"ul"},"Each test starts with a fresh project with a fresh sakila database(option to not use sakila db is also there)."),(0,i.kt)("li",{parentName:"ul"},"Each test creates a new user(email as ",(0,i.kt)("inlineCode",{parentName:"li"},"user@nocodb.com"),") and logs in with that user to the dashboard.")),(0,i.kt)("p",null,"Caveats:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Some stuffs are shared i.e, users, plugins etc. So be catious while writing tests touching that. A fix for this is in the works."),(0,i.kt)("li",{parentName:"ul"},"In test, we prefix email and project with the test id, which will be deleted after the test is done.")),(0,i.kt)("h3",{id:"what-to-test"},"What to test"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"UI verification. This includes verifying the state of the UI element, i.e if the element is visible, if the element has a particular text etc."),(0,i.kt)("li",{parentName:"ul"},"Test should verify all user flow. A test has a default timeout of 60 seconds. If a test is taking more than 60 seconds, it is a sign that the test should be broken down into smaller tests."),(0,i.kt)("li",{parentName:"ul"},"Test should also verify all the side effects the feature(i.e. On adding a new field type, should verify field deletion as well) will have, and also error cases."),(0,i.kt)("li",{parentName:"ul"},"Test name should be descriptive. It should be easy to understand what the test is doing by just reading the test name.")),(0,i.kt)("h3",{id:"playwright"},"Playwright"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Playwright is a nodejs library for automating chromium, firefox and webkit."),(0,i.kt)("li",{parentName:"ul"},"For each test, a new browser context is created. This means that each test runs in a new incognito window."),(0,i.kt)("li",{parentName:"ul"},"For assertion always use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"li"},"@playwright/test")," library. This library provides a lot of useful assertions, which also has retry logic built in.")),(0,i.kt)("h2",{id:"page-objects"},"Page Objects"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Page objects are used to abstract over the components/page. This makes the tests more readable and maintainable."),(0,i.kt)("li",{parentName:"ul"},"All page objects are in ",(0,i.kt)("inlineCode",{parentName:"li"},"tests/playwright/pages")," folder."),(0,i.kt)("li",{parentName:"ul"},"All the test related code should be in page objects."),(0,i.kt)("li",{parentName:"ul"},"Methods should be as thin as possible and its better to have multiple methods than one big method, which improves reusability.")),(0,i.kt)("p",null,"The methods of a page object can be classified into 2 categories:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Actions: Performs an UI actions like click, type, select etc. Is also responsible for waiting for the element to be ready and the action to be performed. This included waiting for API calls to complete."),(0,i.kt)("li",{parentName:"ul"},"Assertions: Asserts the state of the UI element, i.e if the element is visible, if the element has a particular text etc. Use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"li"},"@playwright/test")," and if not use ",(0,i.kt)("inlineCode",{parentName:"li"},"expect.poll")," to wait for the assertion to pass.")),(0,i.kt)("h2",{id:"writing-a-test"},"Writing a test"),(0,i.kt)("p",null,"Let's write a test for testing filter functionality."),(0,i.kt)("p",null,"For simplicity, we will have ",(0,i.kt)("inlineCode",{parentName:"p"},"DashboardPage")," implemented, which will have all the methods related to dashboard page and also its child components like Grid, etc."),(0,i.kt)("h3",{id:"create-a-test-suite"},"Create a test suite"),(0,i.kt)("p",null,"Create a new file ",(0,i.kt)("inlineCode",{parentName:"p"},"filter.spec.ts")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"tests/playwright/tests")," folder and use ",(0,i.kt)("inlineCode",{parentName:"p"},"setup")," method to create a new project and user."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"import { test, expect } from '@playwright/test';\nimport setup, { NcContext } from '../setup';\n\ntest.describe('Filter', () => {\n let context: NcContext;\n\n test.beforeEach(async ({ page }) => {\n context = await setup({ page });\n })\n\n test('should filter', async ({ page }) => {\n // ...\n });\n});\n")),(0,i.kt)("h3",{id:"create-a-page-object"},"Create a page object"),(0,i.kt)("p",null,"Since filter is UI wise scoped to a ",(0,i.kt)("inlineCode",{parentName:"p"},"Toolbar")," , we will add filter page object to ",(0,i.kt)("inlineCode",{parentName:"p"},"ToolbarPage")," page object."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"export class ToolbarPage extends BasePage {\n readonly parent: GridPage | GalleryPage | FormPage | KanbanPage;\n readonly filter: ToolbarFilterPage;\n\n constructor(parent: GridPage | GalleryPage | FormPage | KanbanPage) {\n super(parent.rootPage);\n this.parent = parent;\n this.filter = new ToolbarFilterPage(this);\n }\n}\n")),(0,i.kt)("p",null,"We will create ",(0,i.kt)("inlineCode",{parentName:"p"},"ToolbarFilterPage")," page object, which will have all the methods related to filter."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"export class ToolbarFilterPage extends BasePage {\n readonly toolbar: ToolbarPage;\n\n constructor(toolbar: ToolbarPage) {\n super(toolbar.rootPage);\n this.toolbar = toolbar;\n }\n}\n")),(0,i.kt)("p",null,"Here ",(0,i.kt)("inlineCode",{parentName:"p"},"BasePage")," is an abstract class, which used to enforce structure for all page objects. Thus all page object ",(0,i.kt)("em",{parentName:"p"},"should")," inherit ",(0,i.kt)("inlineCode",{parentName:"p"},"BasePage"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Helper methods like ",(0,i.kt)("inlineCode",{parentName:"li"},"waitForResponse")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"getClipboardText")," (this can be access on any page object, with ",(0,i.kt)("inlineCode",{parentName:"li"},"this.waitForResponse"),")"),(0,i.kt)("li",{parentName:"ul"},"Provides structure for page objects, enforces all Page objects to have ",(0,i.kt)("inlineCode",{parentName:"li"},"rootPage")," property, which is the page object created in the test setup."),(0,i.kt)("li",{parentName:"ul"},"Enforces all pages to have a ",(0,i.kt)("inlineCode",{parentName:"li"},"get")," method which will return the locator of the main container of that page, hence we can have focused dom selection, i.e.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"// This will only select the button inside the container of the concerned page\nawait this.get().querySelector('button').count();\n")),(0,i.kt)("h3",{id:"writing-an-action-method"},"Writing an action method"),(0,i.kt)("p",null,"This a method which will reset/clear all the filters. Since this is an action method, it will also wait for the ",(0,i.kt)("inlineCode",{parentName:"p"},"delete")," filter API to return. Ignoring this API call will cause flakiness in the test, down the line."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"async resetFilter() {\n await this.waitForResponse({\n uiAction: async () => await this.get().locator('.nc-filter-item-remove-btn').click(),\n httpMethodsToMatch: ['DELETE'],\n requestUrlPathToMatch: '/api/v1/db/meta/filters/',\n });\n}\n")),(0,i.kt)("h3",{id:"writing-an-assertionverification-method"},"Writing an assertion/verification method"),(0,i.kt)("p",null,"Here we use ",(0,i.kt)("inlineCode",{parentName:"p"},"expect")," from ",(0,i.kt)("inlineCode",{parentName:"p"},"@playwright/test")," library, which has retry logic built in."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-js"},"import { expect } from '@playwright/test';\n\nasync verifyFilter({ title }: { title: string }) {\n await expect(\n this.get().locator(`[data-testid=\"nc-fields-menu-${title}\"]`).locator('input[type=\"checkbox\"]')\n ).toBeChecked();\n}\n")),(0,i.kt)("h2",{id:"tips-to-avoid-flakiness"},"Tips to avoid flakiness"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"If an UI action, causes an API call or the UI state change, then wait for that API call to complete or the UI state to change."),(0,i.kt)("li",{parentName:"ul"},"What to wait out can be situation specific, but in general, is best to wait for the final state to be reached, i.e. in the case of creating filter, while it seems like waiting for the filter API to complete is enough, but after its return the table records are reloaded and the UI state changes, so its better to wait for the table records to be reloaded.")),(0,i.kt)("h2",{id:"accessing-playwright-report-in-the-ci"},"Accessing playwright report in the CI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Open ",(0,i.kt)("inlineCode",{parentName:"li"},"Summary")," tab in the CI workflow in github actions."),(0,i.kt)("li",{parentName:"ul"},"Scroll down to ",(0,i.kt)("inlineCode",{parentName:"li"},"Artifacts")," section."),(0,i.kt)("li",{parentName:"ul"},"Access reports which suffixed with the db type and shard number(corresponding to the CI workerflow name). i.e ",(0,i.kt)("inlineCode",{parentName:"li"},"playwright-report-mysql-2")," is for ",(0,i.kt)("inlineCode",{parentName:"li"},"playwright-mysql-2")," workflow."),(0,i.kt)("li",{parentName:"ul"},"Download it and run ",(0,i.kt)("inlineCode",{parentName:"li"},"pnpm install -D @playwright/test && npx playwright show-report ./")," inside the downloaded folder.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9964.777c14c3.js b/packages/noco-docs/dist/assets/js/9964.777c14c3.js new file mode 100644 index 0000000000..a3da20bc1e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9964.777c14c3.js @@ -0,0 +1 @@ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9964,7920],{99964:()=>{}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9995b2be.987e5cba.js b/packages/noco-docs/dist/assets/js/9995b2be.987e5cba.js new file mode 100644 index 0000000000..3e23b1a245 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9995b2be.987e5cba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9850],{63067:e=>{e.exports=JSON.parse('{"label":"Table","permalink":"/tags/table","allTagsPath":"/tags","count":1,"items":[{"id":"table-details/table-details-overview","title":"Table details overview","description":"Table details overview","permalink":"/table-details/table-details-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/99f674e5.d6be2932.js b/packages/noco-docs/dist/assets/js/99f674e5.d6be2932.js new file mode 100644 index 0000000000..38ef96200a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/99f674e5.d6be2932.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4307],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=c(n),k=a,u=s["".concat(d,".").concat(k)]||s[k]||m[k]||o;return n?r.createElement(u,i(i({ref:t},p),{},{components:n})):r.createElement(u,i({ref:t},p))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=k;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[s]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}k.displayName="MDXCreateElement"},17813:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var r=n(87462),a=(n(67294),n(3905));const o={title:"Actions on record",description:"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.",tags:["Records","Delete","Edit","Duplicate","Shortcuts"],keywords:["NocoDB delete record","delete record","delete row","delete rows"]},i=void 0,l={unversionedId:"records/actions-on-record",id:"records/actions-on-record",title:"Actions on record",description:"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.",source:"@site/docs/080.records/070.actions-on-record.md",sourceDirName:"080.records",slug:"/records/actions-on-record",permalink:"/records/actions-on-record",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/080.records/070.actions-on-record.md",tags:[{label:"Records",permalink:"/tags/records"},{label:"Delete",permalink:"/tags/delete"},{label:"Edit",permalink:"/tags/edit"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Shortcuts",permalink:"/tags/shortcuts"}],version:"current",sidebarPosition:70,frontMatter:{title:"Actions on record",description:"Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.",tags:["Records","Delete","Edit","Duplicate","Shortcuts"],keywords:["NocoDB delete record","delete record","delete row","delete rows"]},sidebar:"tutorialSidebar",previous:{title:"Expanded record",permalink:"/records/expand-record"},next:{title:"View overview",permalink:"/views/views-overview"}},d={},c=[{value:"Keyboard navigation within Grid view",id:"keyboard-navigation-within-grid-view",level:2},{value:"Keyboard shortcuts for cell navigation",id:"keyboard-shortcuts-for-cell-navigation",level:3},{value:"Update Record",id:"update-record",level:3},{value:"Bulk Update Records",id:"bulk-update-records",level:3},{value:"Delete Record (Single)",id:"delete-record-single",level:3},{value:"Delete Record (Bulk)",id:"delete-record-bulk",level:3}],p={toc:c},s="wrapper";function m(e){let{components:t,...o}=e;return(0,a.kt)(s,(0,r.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"keyboard-navigation-within-grid-view"},"Keyboard navigation within Grid view"),(0,a.kt)("p",null,"A selected cell can be in one of the following states:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"Select")," state : A single click on the cell selects the cell. When in this state, arrow keys can be used to navigate to adjacent cells."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"Edit")," state : A double click on the cell puts the cell in edit state. Cursor can be moved within the cell using arrow keys.")),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"Double-click on a cell to put it in edit state directly."),(0,a.kt)("li",{parentName:"ul"},"From Select state, press ",(0,a.kt)("inlineCode",{parentName:"li"},"Enter")," key to enter edit state."),(0,a.kt)("li",{parentName:"ul"},"Press ",(0,a.kt)("inlineCode",{parentName:"li"},"Esc")," key to exit edit state."),(0,a.kt)("li",{parentName:"ul"},"From Edit state, press ",(0,a.kt)("inlineCode",{parentName:"li"},"Enter")," key to save the changes."))),(0,a.kt)("p",null,"Edit state for some cells will be a picker. For example, a cell with ",(0,a.kt)("inlineCode",{parentName:"p"},"Single Select")," field type will have a picker with options to choose from. In such cases, arrow keys can be used to navigate between options."),(0,a.kt)("h3",{id:"keyboard-shortcuts-for-cell-navigation"},"Keyboard shortcuts for cell navigation"),(0,a.kt)("table",null,(0,a.kt)("thead",{parentName:"table"},(0,a.kt)("tr",{parentName:"thead"},(0,a.kt)("th",{parentName:"tr",align:"right"},"Key"),(0,a.kt)("th",{parentName:"tr",align:"left"},"Behaviour"))),(0,a.kt)("tbody",{parentName:"table"},(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,a.kt)("inlineCode",{parentName:"td"},"\u2191")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Jump to first record in this field (in same page)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,a.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Jump to last record in this field (in same page)")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,a.kt)("inlineCode",{parentName:"td"},"C")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Copy cell contents to clipboard")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"\u2318")," ",(0,a.kt)("inlineCode",{parentName:"td"},"V")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Paste clipboard contents to cell")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"Enter")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Switch cell in focus to EDIT mode; opens modal/picker if cell is associated with one")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"Esc")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Exit cell EDIT mode")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"Delete")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Clear cell")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"Space")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Expand current record")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"\u2190")," ",(0,a.kt)("inlineCode",{parentName:"td"},"\u2192")," ",(0,a.kt)("inlineCode",{parentName:"td"},"\u2191")," ",(0,a.kt)("inlineCode",{parentName:"td"},"\u2193")),(0,a.kt)("td",{parentName:"tr",align:"left"},"General cell navigation : left, right, top, bottom")),(0,a.kt)("tr",{parentName:"tbody"},(0,a.kt)("td",{parentName:"tr",align:"right"},(0,a.kt)("inlineCode",{parentName:"td"},"Tab")),(0,a.kt)("td",{parentName:"tr",align:"left"},"Move to next cell horizontally; if on last cell, move to beginning of next record")))),(0,a.kt)("h3",{id:"update-record"},"Update Record"),(0,a.kt)("p",null,"You can start editing by any of the following methods"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Double-click on cell to edit"),(0,a.kt)("li",{parentName:"ul"},"Click on cell and start typing (this way it will clear the previous content)"),(0,a.kt)("li",{parentName:"ul"},"Click on cell and press enter to start editing")),(0,a.kt)("p",null,"And it will automatically save on blur event or if inactive."),(0,a.kt)("h3",{id:"bulk-update-records"},"Bulk Update Records"),(0,a.kt)("p",null,"You can bulk update records by "),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Selecting multiple records that you wish to update together and then "),(0,a.kt)("li",{parentName:"ol"},"Right-click on the index field area (first column on the grid view) and then select ",(0,a.kt)("inlineCode",{parentName:"li"},"Bulk Update records")," option from the context menu. This will open ",(0,a.kt)("inlineCode",{parentName:"li"},"Bulk update")," modal.")),(0,a.kt)("p",null,"On the bulk update modal,\n3. ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields area")," : Select the fields that you want to update.\n4. ",(0,a.kt)("inlineCode",{parentName:"p"},"Selected fields area")," : Enter the new value for the selected fields.\n5. Click on the ",(0,a.kt)("inlineCode",{parentName:"p"},"Bulk Update all")," button\n6. A confirmation dialog will be displayed. Click on ",(0,a.kt)("inlineCode",{parentName:"p"},"Confirm")," to update the records."),(0,a.kt)("admonition",{type:"danger"},(0,a.kt)("p",{parentName:"admonition"},"This operation cannot be undone.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Bulk Update",src:n(1826).Z,width:"2876",height:"1108"})),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Bulk Update",src:n(30265).Z,width:"2878",height:"1024"})),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"Bulk Update",src:n(11595).Z,width:"2876",height:"954"})),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"You can drag drop required fields from the ",(0,a.kt)("inlineCode",{parentName:"p"},"Fields area")," to the ",(0,a.kt)("inlineCode",{parentName:"p"},"Selected fields area")," & vice versa.",(0,a.kt)("br",{parentName:"p"}),"\n","You can update multiple fields at a time.")),(0,a.kt)("h3",{id:"delete-record-single"},"Delete Record (Single)"),(0,a.kt)("p",null,"Right-click on record and then from the cell context menu, select ",(0,a.kt)("inlineCode",{parentName:"p"},"Delete Record")," option."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"delete row -1",src:n(36783).Z,width:"2308",height:"940"})),(0,a.kt)("h3",{id:"delete-record-bulk"},"Delete Record (Bulk)"),(0,a.kt)("p",null,"Select multiple records by using the checkbox in first column and then ",(0,a.kt)("inlineCode",{parentName:"p"},"Delete Selected Records")," options from the right click context menu."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"delete row 2",src:n(60426).Z,width:"2306",height:"858"})))}m.isMDXComponent=!0},1826:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/bulk-update-1-abf0bea8ffcee3689a6b4c7bc912a92b.png"},30265:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/bulk-update-2-8ad8314489b9cb76d57cdddddcf2ab85.png"},11595:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/bulk-update-3-e8c66d72a7fdbe1247482ba2021aa0f5.png"},60426:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/delete-row-bulk-70240cbb8e8a5e84e368e9ff11b6e5c0.png"},36783:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/delete-row-2ef2b7c113b757dabf1542106e79f2db.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9a52cc21.0dd1507a.js b/packages/noco-docs/dist/assets/js/9a52cc21.0dd1507a.js new file mode 100644 index 0000000000..a3025885e1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9a52cc21.0dd1507a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3062],{10804:e=>{e.exports=JSON.parse('{"label":"Numerical types","permalink":"/tags/numerical-types","allTagsPath":"/tags","count":4,"items":[{"id":"fields/field-types/numerical/currency","title":"Currency","description":"This article explains how to create & work with a Currency field.","permalink":"/fields/field-types/numerical/currency"},{"id":"fields/field-types/numerical/decimal","title":"Decimal","description":"This article explains how to create & work with a Decimal field.","permalink":"/fields/field-types/numerical/decimal"},{"id":"fields/field-types/numerical/number","title":"Number","description":"This article explains how to create & work with a Number field.","permalink":"/fields/field-types/numerical/number"},{"id":"fields/field-types/numerical/percent","title":"Percent","description":"This article explains how to create & work with a Percent field.","permalink":"/fields/field-types/numerical/percent"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9a7e4ef7.774c04a9.js b/packages/noco-docs/dist/assets/js/9a7e4ef7.774c04a9.js new file mode 100644 index 0000000000..07d20d1ba7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9a7e4ef7.774c04a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1961],{20467:e=>{e.exports=JSON.parse('{"label":"Bases","permalink":"/tags/bases","allTagsPath":"/tags","count":9,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"},{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"collaboration/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/collaboration/base-collaboration"},{"id":"bases/base-overview","title":"Base overview","description":"This article explains the concept of bases in NocoDB.","permalink":"/bases/base-overview"},{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"bases/create-base","title":"Create base","description":"Learn how to create a base in NocoDB.","permalink":"/bases/create-base"},{"id":"bases/import-base-from-airtable","title":"Import Airtable to NocoDB","description":"A complete import of your Airtable to any MySQL or Postgres databases within minutes","permalink":"/bases/import-base-from-airtable"},{"id":"bases/share-base","title":"Share base","description":"Procedures to share a base & generating embedded iframe","permalink":"/bases/share-base"},{"id":"collaboration/share-base","title":"Share base","description":"Procedures to share a base publicly & generating embedded iframe","permalink":"/collaboration/share-base"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9aad2067.54a4562f.js b/packages/noco-docs/dist/assets/js/9aad2067.54a4562f.js new file mode 100644 index 0000000000..5dc5a096e1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9aad2067.54a4562f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4769],{41536:e=>{e.exports=JSON.parse('{"label":"Phone number","permalink":"/tags/phone-number","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/text-based/phonenumber","title":"Phone Number","description":"This article explains how to create & work with a Phone number field.","permalink":"/fields/field-types/text-based/phonenumber"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9c78149d.29a2e4eb.js b/packages/noco-docs/dist/assets/js/9c78149d.29a2e4eb.js new file mode 100644 index 0000000000..14981ffc3d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9c78149d.29a2e4eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8381],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var u=r.createContext({}),c=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},l="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),l=c(n),m=o,g=l["".concat(u,".").concat(m)]||l[m]||d[m]||i;return n?r.createElement(g,a(a({ref:t},p),{},{components:n})):r.createElement(g,a({ref:t},p))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[l]="string"==typeof e?e:o,a[1]=s;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},51959:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(87462),o=(n(67294),n(3905));const i={title:"Audit",description:"NocoDB provides all the user operation logs under Audit log"},a=void 0,s={unversionedId:"setup-and-usages/audit",id:"version-0.109.7/setup-and-usages/audit",title:"Audit",description:"NocoDB provides all the user operation logs under Audit log",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/250.audit.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/audit",permalink:"/0.109.7/setup-and-usages/audit",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/250.audit.md",tags:[],version:"0.109.7",sidebarPosition:250,frontMatter:{title:"Audit",description:"NocoDB provides all the user operation logs under Audit log"},sidebar:"tutorialSidebar",previous:{title:"Data Sources",permalink:"/0.109.7/setup-and-usages/meta-management"},next:{title:"Project settings",permalink:"/0.109.7/setup-and-usages/project-settings"}},u={},c=[{value:"Overview",id:"overview",level:2}],p={toc:c},l="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(l,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"We are keeping all the user operation logs under Audit. To access it, click the down arrow button next to Project Name on the top left side, then select ",(0,o.kt)("inlineCode",{parentName:"p"},"Team & Settings"),"."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We can disable audit logs by setting ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_DISABLE_AUDIT")," to ",(0,o.kt)("inlineCode",{parentName:"p"},"true"),".")),(0,o.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,o.kt)("p",null,"Then, under SETTINGS, click ",(0,o.kt)("inlineCode",{parentName:"p"},"Audit"),"."),(0,o.kt)("img",{width:"1399",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194796474-417395db-08d5-45e5-8be4-c30ff0027e45.png"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9d4ed5ff.35c99d38.js b/packages/noco-docs/dist/assets/js/9d4ed5ff.35c99d38.js new file mode 100644 index 0000000000..daa7bb2e0d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9d4ed5ff.35c99d38.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4333],{3905:(e,a,t)=>{t.d(a,{Zo:()=>p,kt:()=>y});var i=t(67294);function l(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function n(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);a&&(i=i.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,i)}return t}function s(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?n(Object(t),!0).forEach((function(a){l(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):n(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}function r(e,a){if(null==e)return{};var t,i,l=function(e,a){if(null==e)return{};var t,i,l={},n=Object.keys(e);for(i=0;i<n.length;i++)t=n[i],a.indexOf(t)>=0||(l[t]=e[t]);return l}(e,a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i<n.length;i++)t=n[i],a.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(l[t]=e[t])}return l}var o=i.createContext({}),u=function(e){var a=i.useContext(o),t=a;return e&&(t="function"==typeof e?e(a):s(s({},a),e)),t},p=function(e){var a=u(e.components);return i.createElement(o.Provider,{value:a},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var a=e.children;return i.createElement(i.Fragment,{},a)}},h=i.forwardRef((function(e,a){var t=e.components,l=e.mdxType,n=e.originalType,o=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),d=u(t),h=l,y=d["".concat(o,".").concat(h)]||d[h]||c[h]||n;return t?i.createElement(y,s(s({ref:a},p),{},{components:t})):i.createElement(y,s({ref:a},p))}));function y(e,a){var t=arguments,l=a&&a.mdxType;if("string"==typeof e||l){var n=t.length,s=new Array(n);s[0]=h;var r={};for(var o in a)hasOwnProperty.call(a,o)&&(r[o]=a[o]);r.originalType=e,r[d]="string"==typeof e?e:l,s[1]=r;for(var u=2;u<n;u++)s[u]=t[u];return i.createElement.apply(null,s)}return i.createElement.apply(null,t)}h.displayName="MDXCreateElement"},84673:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>o,contentTitle:()=>s,default:()=>c,frontMatter:()=>n,metadata:()=>r,toc:()=>u});var i=t(87462),l=(t(67294),t(3905));const n={title:"Display Value",description:"Understanding Display Value in NocoDB!"},s=void 0,r={unversionedId:"setup-and-usages/display-value",id:"version-0.109.7/setup-and-usages/display-value",title:"Display Value",description:"Understanding Display Value in NocoDB!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/110.display-value.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/display-value",permalink:"/0.109.7/setup-and-usages/display-value",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/110.display-value.md",tags:[],version:"0.109.7",sidebarPosition:110,frontMatter:{title:"Display Value",description:"Understanding Display Value in NocoDB!"},sidebar:"tutorialSidebar",previous:{title:"Primary Key",permalink:"/0.109.7/setup-and-usages/primary-key"},next:{title:"Sync Schema",permalink:"/0.109.7/setup-and-usages/sync-schema"}},o={},u=[{value:"What is a Display Value ?",id:"what-is-a-display-value-",level:2},{value:"What is the use of Display Value ?",id:"what-is-the-use-of-display-value-",level:2},{value:"Example : Display Value highlighted in Actor table",id:"example--display-value-highlighted-in-actor-table",level:4},{value:"Example : Display Value highlighted in Film table",id:"example--display-value-highlighted-in-film-table",level:4},{value:"Example : Display Value associated when LinkToAnotherRecord is created",id:"example--display-value-associated-when-linktoanotherrecord-is-created",level:4},{value:"How to set Display Value ?",id:"how-to-set-display-value-",level:2},{value:"How is Display Value identfied for existing database tables ?",id:"how-is-display-value-identfied-for-existing-database-tables-",level:2},{value:"Can I change the Display Value to another column within tables ?",id:"can-i-change-the-display-value-to-another-column-within-tables-",level:2}],p={toc:u},d="wrapper";function c(e){let{components:a,...t}=e;return(0,l.kt)(d,(0,i.Z)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"what-is-a-display-value-"},"What is a Display Value ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Display Value as the name stands is the primary or main value within a row of a table that you generally associate that row with."),(0,l.kt)("li",{parentName:"ul"},"It should be usually associated with a column which is uniquely identifiable. However, this uniqueness is not enforced at the database level."),(0,l.kt)("li",{parentName:"ul"},"Before v0.105.0, Display Value was known as Primary Value.")),(0,l.kt)("h2",{id:"what-is-the-use-of-display-value-"},"What is the use of Display Value ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Within a spreadsheet, Display Value are always highlighted so that it is easier to recognise what row we are in."),(0,l.kt)("li",{parentName:"ul"},"And when LinkToAnotherRecord is created between two tables - it is the Display Value that appears in LinkToAnotheRecord column. ")),(0,l.kt)("h4",{id:"example--display-value-highlighted-in-actor-table"},"Example : Display Value highlighted in Actor table"),(0,l.kt)("img",{width:"646",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189114321-58ebaa16-20e2-4615-abda-39417a5df5bf.png"}),(0,l.kt)("h4",{id:"example--display-value-highlighted-in-film-table"},"Example : Display Value highlighted in Film table"),(0,l.kt)("img",{width:"643",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189114462-a7fef0e2-f9ac-4943-98d5-fee9f60a4ab5.png"}),(0,l.kt)("h4",{id:"example--display-value-associated-when-linktoanotherrecord-is-created"},"Example : Display Value associated when LinkToAnotherRecord is created"),(0,l.kt)("img",{width:"311",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189114548-193acc4d-f714-4204-a560-97668db7884c.png"}),(0,l.kt)("h2",{id:"how-to-set-display-value-"},"How to set Display Value ?"),(0,l.kt)("p",null,"Click down arrow in the target column. Click ",(0,l.kt)("inlineCode",{parentName:"p"},"Set as Display Value"),". "),(0,l.kt)("p",null,(0,l.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219339727-dee5fdea-6db7-4a06-9e48-df7113cc63b1.png",alt:"image"})),(0,l.kt)("h2",{id:"how-is-display-value-identfied-for-existing-database-tables-"},"How is Display Value identfied for existing database tables ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"It is usually the first column after the primary key which is not a number. "),(0,l.kt)("li",{parentName:"ul"},"If there is no column which is not a number then the column adjacent to primary key is chosen. ")),(0,l.kt)("h2",{id:"can-i-change-the-display-value-to-another-column-within-tables-"},"Can I change the Display Value to another column within tables ?"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Yes, you can use the same way mentioned above to set Display Value.")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9db0d30f.4b7b42d4.js b/packages/noco-docs/dist/assets/js/9db0d30f.4b7b42d4.js new file mode 100644 index 0000000000..c6b74ad421 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9db0d30f.4b7b42d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6090],{54041:o=>{o.exports=JSON.parse('{"label":"Webhook","permalink":"/tags/webhook","allTagsPath":"/tags","count":3,"items":[{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","permalink":"/automation/webhook/actions-on-webhook"},{"id":"automation/webhook/create-webhook","title":"Create webhook","description":"Learn how to create a webhook in NocoDB.","permalink":"/automation/webhook/create-webhook"},{"id":"automation/webhook/webhook-overview","title":"Webhook overview","description":"Learn how to create, modify and delete webhooks.","permalink":"/automation/webhook/webhook-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9db7fbd6.df4b0b95.js b/packages/noco-docs/dist/assets/js/9db7fbd6.df4b0b95.js new file mode 100644 index 0000000000..21da33f7bd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9db7fbd6.df4b0b95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[481],{93717:t=>{t.exports=JSON.parse('{"label":"Import","permalink":"/tags/import","allTagsPath":"/tags","count":2,"items":[{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","permalink":"/tables/create-table-via-import"},{"id":"bases/import-base-from-airtable","title":"Import Airtable to NocoDB","description":"A complete import of your Airtable to any MySQL or Postgres databases within minutes","permalink":"/bases/import-base-from-airtable"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9dfd9b1b.3faaa4fe.js b/packages/noco-docs/dist/assets/js/9dfd9b1b.3faaa4fe.js new file mode 100644 index 0000000000..7c2cc4cb3e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9dfd9b1b.3faaa4fe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9279],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>v});var o=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?a(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function c(e,r){if(null==e)return{};var t,o,n=function(e,r){if(null==e)return{};var t,o,n={},a=Object.keys(e);for(o=0;o<a.length;o++)t=a[o],r.indexOf(t)>=0||(n[t]=e[t]);return n}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)t=a[o],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var s=o.createContext({}),d=function(e){var r=o.useContext(s),t=r;return e&&(t="function"==typeof e?e(r):i(i({},r),e)),t},l=function(e){var r=d(e.components);return o.createElement(s.Provider,{value:r},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var r=e.children;return o.createElement(o.Fragment,{},r)}},f=o.forwardRef((function(e,r){var t=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),p=d(t),f=n,v=p["".concat(s,".").concat(f)]||p[f]||u[f]||a;return t?o.createElement(v,i(i({ref:r},l),{},{components:t})):o.createElement(v,i({ref:r},l))}));function v(e,r){var t=arguments,n=r&&r.mdxType;if("string"==typeof e||n){var a=t.length,i=new Array(a);i[0]=f;var c={};for(var s in r)hasOwnProperty.call(r,s)&&(c[s]=r[s]);c.originalType=e,c[p]="string"==typeof e?e:n,i[1]=c;for(var d=2;d<a;d++)i[d]=t[d];return o.createElement.apply(null,i)}return o.createElement.apply(null,t)}f.displayName="MDXCreateElement"},28507:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>d});var o=t(87462),n=(t(67294),t(3905));const a={title:"Records overview",description:"Learn how to create, import, and manage records in NocoDB.",tags:["Records","Overview"],keywords:["NocoDB record","record overview"]},i=void 0,c={unversionedId:"records/records-overview",id:"records/records-overview",title:"Records overview",description:"Learn how to create, import, and manage records in NocoDB.",source:"@site/docs/080.records/010.records-overview.md",sourceDirName:"080.records",slug:"/records/records-overview",permalink:"/records/records-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/080.records/010.records-overview.md",tags:[{label:"Records",permalink:"/tags/records"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Records overview",description:"Learn how to create, import, and manage records in NocoDB.",tags:["Records","Overview"],keywords:["NocoDB record","record overview"]},sidebar:"tutorialSidebar",previous:{title:"Actions on field",permalink:"/fields/actions-on-field"},next:{title:"Create record",permalink:"/records/create-record"}},s={},d=[],l={toc:d},p="wrapper";function u(e){let{components:r,...t}=e;return(0,n.kt)(p,(0,o.Z)({},l,t,{components:r,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Records in NocoDB are fundamental components within a database, serving as individual entries or data points within a table. Each default table in NocoDB is meticulously organized into a structured grid of records, fields (columns), and cells. These records constitute the backbone of data storage and retrieval within NocoDB, encapsulating a diverse range of information types, including text, numerical values, dates, file attachments, and even links to other records, either within the same table or across different tables. This versatile approach allows users to create highly customizable databases tailored to their specific data management needs, all centered around the concept of records."),(0,n.kt)("p",null,"In essence, a record can be envisaged as a horizontal collection of data within a NocoDB table, each record representing a distinct piece of information. These records play a pivotal role in organizing, categorizing, and presenting data in a comprehensible and efficient manner, offering users a structured and organized platform for data management. "),(0,n.kt)("p",null,"In this section, we'll explore the various aspects of records in NocoDB, equipping you with the knowledge to effectively manage your own data."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9e1a113d.31b44444.js b/packages/noco-docs/dist/assets/js/9e1a113d.31b44444.js new file mode 100644 index 0000000000..d84e82e171 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9e1a113d.31b44444.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6999],{45182:e=>{e.exports=JSON.parse('{"label":"Display value","permalink":"/tags/display-value","allTagsPath":"/tags","count":2,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"fields/display-value","title":"Display value","description":"This article explains how to set display value for a table & its use.","permalink":"/fields/display-value"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/9e7567e1.fa0b282d.js b/packages/noco-docs/dist/assets/js/9e7567e1.fa0b282d.js new file mode 100644 index 0000000000..bf1ac6ba3b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/9e7567e1.fa0b282d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7823],{27737:l=>{l.exports=JSON.parse('{"label":"Rollup","permalink":"/tags/rollup","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/links-based/rollup","title":"Rollup","description":"This article explains how to create & work with a Rollup field.","permalink":"/fields/field-types/links-based/rollup"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a15cb612.f7f99640.js b/packages/noco-docs/dist/assets/js/a15cb612.f7f99640.js new file mode 100644 index 0000000000..9e838dc041 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a15cb612.f7f99640.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9042],{42822:o=>{o.exports=JSON.parse('{"label":"Disable","permalink":"/tags/disable","allTagsPath":"/tags","count":1,"items":[{"id":"automation/webhook/actions-on-webhook","title":"Actions on webhook","description":"Learn how to enable/disable, duplicate and delete webhooks.","permalink":"/automation/webhook/actions-on-webhook"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a18f2535.2f4e7484.js b/packages/noco-docs/dist/assets/js/a18f2535.2f4e7484.js new file mode 100644 index 0000000000..eda82c5ed0 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a18f2535.2f4e7484.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6928],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>v});var o=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function n(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,o,r=function(e,t){if(null==e)return{};var a,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)a=i[o],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)a=i[o],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=o.createContext({}),c=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},d=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",w={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(a),h=r,v=p["".concat(l,".").concat(h)]||p[h]||w[h]||i;return a?o.createElement(v,n(n({ref:t},d),{},{components:a})):o.createElement(v,n({ref:t},d))}));function v(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,n=new Array(i);n[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:r,n[1]=s;for(var c=2;c<i;c++)n[c]=a[c];return o.createElement.apply(null,n)}return o.createElement.apply(null,a)}h.displayName="MDXCreateElement"},61492:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>w,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=a(87462),r=(a(67294),a(3905));const i={title:"Share view",description:"Procedures to share a view publicly",tags:["Views","Share","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","share view","share","share view with password protection","share view with download options"]},n=void 0,s={unversionedId:"collaboration/share-view",id:"collaboration/share-view",title:"Share view",description:"Procedures to share a view publicly",source:"@site/docs/120.collaboration/040.share-view.md",sourceDirName:"120.collaboration",slug:"/collaboration/share-view",permalink:"/collaboration/share-view",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/040.share-view.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Share",permalink:"/tags/share"},{label:"Grid view",permalink:"/tags/grid-view"},{label:"Form view",permalink:"/tags/form-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Gallery view",permalink:"/tags/gallery-view"}],version:"current",sidebarPosition:40,frontMatter:{title:"Share view",description:"Procedures to share a view publicly",tags:["Views","Share","Grid view","Form view","Kanban view","Gallery view"],keywords:["NocoDB view","share view","share","share view with password protection","share view with download options"]},sidebar:"tutorialSidebar",previous:{title:"Share base",permalink:"/collaboration/share-base"},next:{title:"In Open Source",permalink:"/collaboration/oss-specific-details"}},l={},c=[{value:"Generate Share View",id:"generate-share-view",level:2},{value:"Share view options",id:"share-view-options",level:3},{value:"Password protection",id:"password-protection",level:4},{value:"Download options",id:"download-options",level:4},{value:"Share Form View Options",id:"share-form-view-options",level:3},{value:"Access Share View",id:"access-share-view",level:2}],d={toc:c},p="wrapper";function w(e){let{components:t,...i}=e;return(0,r.kt)(p,(0,o.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"generate-share-view"},"Generate Share View"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Share")," button on the top right of the toolbar"),(0,r.kt)("li",{parentName:"ol"},"Toggle ",(0,r.kt)("inlineCode",{parentName:"li"},"Enable public viewing")," to create shared view link"),(0,r.kt)("li",{parentName:"ol"},"Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Copy")," button to copy the link to clipboard")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"share button",src:a(13890).Z,width:"2894",height:"864"})),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"shared view",src:a(34067).Z,width:"2876",height:"1800"})),(0,r.kt)("h3",{id:"share-view-options"},"Share view options"),(0,r.kt)("h4",{id:"password-protection"},"Password protection"),(0,r.kt)("p",null,"You can enable ",(0,r.kt)("inlineCode",{parentName:"p"},"Restrict access with a password")," if you want a password-protected view"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"password protection",src:a(80589).Z,width:"2876",height:"1800"})),(0,r.kt)("h4",{id:"download-options"},"Download options"),(0,r.kt)("p",null,"You can toggle ",(0,r.kt)("inlineCode",{parentName:"p"},"Allow Download")," button to enable or disable download CSV/XLSX options in the shared view link"),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"download options",src:a(2008).Z,width:"2876",height:"1800"})),(0,r.kt)("h3",{id:"share-form-view-options"},"Share Form View Options"),(0,r.kt)("p",null,"Form view has additional customizations for shared view. You can enable/disable the following options for shared form view:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"Survey mode"),": This option when enabled, will display the form in survey mode."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"RTL Orientation"),": This option when enabled, will display the form in RTL orientation."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},"Themes"),": You can select a theme for the form from the dropdown.\n",(0,r.kt)("img",{alt:"form view options",src:a(27579).Z,width:"2876",height:"1800"}))),(0,r.kt)("h2",{id:"access-share-view"},"Access Share View"),(0,r.kt)("p",null,"To access the shared view, please follow the steps below:\nClick on the ",(0,r.kt)("inlineCode",{parentName:"p"},"Shared View URL"),". If the URL is password-protected, you will be prompted to enter the password to unlock it. Please input the required password to proceed."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"password modal",src:a(62814).Z,width:"1328",height:"846"})),(0,r.kt)("p",null,"Once the password is successfully entered and authenticated, you will gain access to the shared view.\nIn the event that the URL is not password-protected, you will be directed to the shared view directly, without the need for a password."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"share-view",src:a(90801).Z,width:"2880",height:"1800"})),(0,r.kt)("p",null,"Users with the shared view link can only view the data and cannot make any changes to the view or its content. Records and fields in the shared view will be updated in real-time as changes are made to the original view. Users accessing shared view can apply filters and sort records as per their requirements."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that, filters & sorts applied to shared view will not be persisted. These filters & sorts will be reset when the shared view is accessed again.")))}w.isMDXComponent=!0},13890:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-button-9751630544eab59c43f368bcbe4aaaae.png"},27579:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-form-d98371a23098e020e611302bcb5ebe40.png"},80589:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-modal-2-4bb63f03e7cb528595d3f2f6335fca02.png"},2008:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-modal-3-1202422c5c9bf2b234a5b5ed7a05e805.png"},34067:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-modal-2c40f95aa822fa2830e1f205431a4b4e.png"},62814:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-password-8b55b2f905ed895f6ceddccad842c205.png"},90801:(e,t,a)=>{a.d(t,{Z:()=>o});const o=a.p+"assets/images/share-view-22f8daabd281e5b6199d1e03ab814378.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a43060c8.ee2e4b77.js b/packages/noco-docs/dist/assets/js/a43060c8.ee2e4b77.js new file mode 100644 index 0000000000..35931569dc --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a43060c8.ee2e4b77.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3185],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=o,h=d["".concat(s,".").concat(m)]||d[m]||u[m]||r;return n?a.createElement(h,l(l({ref:t},c),{},{components:n})):a.createElement(h,l({ref:t},c))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=m;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[d]="string"==typeof e?e:o,l[1]=i;for(var p=2;p<r;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},96:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var a=n(87462),o=(n(67294),n(3905));const r={title:"Links",description:"Understanding Link Columns!"},l=void 0,i={unversionedId:"setup-and-usages/links",id:"version-0.109.7/setup-and-usages/links",title:"Links",description:"Understanding Link Columns!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/220.links.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/links",permalink:"/0.109.7/setup-and-usages/links",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/220.links.md",tags:[],version:"0.109.7",sidebarPosition:220,frontMatter:{title:"Links",description:"Understanding Link Columns!"},sidebar:"tutorialSidebar",previous:{title:"Usage Information",permalink:"/0.109.7/setup-and-usages/usage-information"},next:{title:"Team & Auth",permalink:"/0.109.7/setup-and-usages/team-and-auth"}},s={},p=[{value:"Supported relationship types:",id:"supported-relationship-types",level:3},{value:"Adding a relationship",id:"adding-a-relationship",level:2},{value:"Linking records",id:"linking-records",level:2},{value:"1. Open link record tab",id:"1-open-link-record-tab",level:3},{value:"2. Select from the option displayed",id:"2-select-from-the-option-displayed",level:3},{value:"3. Column display for "Has Many" relationship",id:"3-column-display-for-has-many-relationship",level:3},{value:"4. Column display for "Belongs to" relationship Automatically updated",id:"4-column-display-for-belongs-to-relationship-automatically-updated",level:3},{value:"Unlinking records",id:"unlinking-records",level:2},{value:"Link label reconfiguration",id:"link-label-reconfiguration",level:2}],c={toc:p},d="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h3",{id:"supported-relationship-types"},"Supported relationship types:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"One to many",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"A Table record in first table is related to more than one record of second table. But second table record maps to only one entry of first table"),(0,o.kt)("li",{parentName:"ul"},"NocoDB refers to this category of relationship as ",(0,o.kt)("strong",{parentName:"li"},"has many")),(0,o.kt)("li",{parentName:"ul"},"For every ",(0,o.kt)("strong",{parentName:"li"},"has many")," relation defined, NocoDB augments ",(0,o.kt)("strong",{parentName:"li"},"belongs to")," relationship column in the adjacent table automatically"),(0,o.kt)("li",{parentName:"ul"},"Example: Country ",(0,o.kt)("strong",{parentName:"li"},"has many")," Cities. (other way mapping > City ",(0,o.kt)("strong",{parentName:"li"},"belongs to")," Country )"))),(0,o.kt)("li",{parentName:"ul"},"Many to many",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"A Table record in first table is related to more than one record of second table; second table record can also map to more than on record of first table."),(0,o.kt)("li",{parentName:"ul"},"NocoDB refers to this category of relationship as ",(0,o.kt)("strong",{parentName:"li"},"many to many")),(0,o.kt)("li",{parentName:"ul"},"For every ",(0,o.kt)("strong",{parentName:"li"},"many to many")," relation defined between tables, NocoDB augments ",(0,o.kt)("strong",{parentName:"li"},"many to many")," relationship column in the other table automatically"),(0,o.kt)("li",{parentName:"ul"},"Example: Film ",(0,o.kt)("strong",{parentName:"li"},"has many")," Actors. Actor ",(0,o.kt)("strong",{parentName:"li"},"has many")," Films (works on many films)")))),(0,o.kt)("p",null,"Further details of relationship types can be found ",(0,o.kt)("a",{parentName:"p",href:"https://afteracademy.com/blog/what-are-the-different-types-of-relationships-in-dbms"},"here")),(0,o.kt)("p",null,"From Release v0.111.0, table records can be connected through relationships using the ",(0,o.kt)("strong",{parentName:"p"},"Links")," column type.\nIt is important to note that, earlier supported column type ",(0,o.kt)("strong",{parentName:"p"},"LinkToAnotherRecord")," for creating relations is considered deprecated. While the old datatype is still supported for backward compatibility, it is no longer possible to create new fields of that type."),(0,o.kt)("p",null,"The main distinction between these two column types lies in how the contents are displayed within the cell when links are established between two tables. With the ",(0,o.kt)("strong",{parentName:"p"},"LinkToAnotherRecord")," column type, the cell displays the ",(0,o.kt)("strong",{parentName:"p"},"Primary value")," of the related records. On the other hand, the ",(0,o.kt)("strong",{parentName:"p"},"Links")," column type only shows the ",(0,o.kt)("strong",{parentName:"p"},"count")," of related records.\nThe decision to switch over to new column type was made to ensure better performance and scalability of the application, more so when the records & the number of records in the related table is large."),(0,o.kt)("p",null,"Child list to display the related records can be accessed by clicking on the link count displayed on the cell.\nExcept for the column type, the following procedures remain same as before "),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Create, update & delete a relationship column, "),(0,o.kt)("li",{parentName:"ul"},"Link & unlink a record, "),(0,o.kt)("li",{parentName:"ul"},"Create a lookup and rollup columns ")),(0,o.kt)("p",null,"Workflow details are captured below."),(0,o.kt)("h2",{id:"adding-a-relationship"},"Adding a relationship"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/b3762fc8-4bba-42ef-8415-41428840ee0e",alt:"Screenshot 2023-06-27 at 11 03 20 AM"})),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Create column\nClick on '+' button at end of column headers")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Update column name\nInput name in the text box provided")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},'Select column type\nSelect Column type as "Links" from the drop-down menu')),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Choose relationship type"))),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"'Has Many' corresponds to the 'One-to-many' relationships"),(0,o.kt)("li",{parentName:"ul"},"'Many To Many' corresponds to the 'Many-to-many' relationships")),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Select child table from drop down menu")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Click on 'Save'\nA new column will get created in both the parent table & child table"))),(0,o.kt)("h2",{id:"linking-records"},"Linking records"),(0,o.kt)("h3",{id:"1-open-link-record-tab"},"1. Open link record tab"),(0,o.kt)("p",null,"Click on the '+' icon in corresponding row - cell\n",(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/96a90a6d-544e-4e43-b6d1-fe1aef784257",alt:"Screenshot 2023-06-27 at 11 06 52 AM"})),(0,o.kt)("h3",{id:"2-select-from-the-option-displayed"},"2. Select from the option displayed"),(0,o.kt)("p",null,"Use 'Filter box' to narrow down on search items.",(0,o.kt)("br",{parentName:"p"}),"\n",'You can opt to insert a new record as well, using "+ New Record" button.',(0,o.kt)("br",{parentName:"p"}),"\n","You can use ",(0,o.kt)("inlineCode",{parentName:"p"},"ALT + Click")," to insert multiple options together. "),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/68246783-8d01-488b-8926-644fca8fa164",alt:"Screenshot 2023-06-27 at 11 08 40 AM"})),(0,o.kt)("h3",{id:"3-column-display-for-has-many-relationship"},'3. Column display for "Has Many" relationship'),(0,o.kt)("p",null,"Country 'has many' City"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/b5bb62b7-37ad-480e-8bf2-d666b775b07a",alt:"Screenshot 2023-06-27 at 11 11 50 AM"})),(0,o.kt)("h3",{id:"4-column-display-for-belongs-to-relationship-automatically-updated"},'4. Column display for "Belongs to" relationship ',"[Automatically updated]"),(0,o.kt)("p",null,"City 'belongs to' Country.",(0,o.kt)("br",{parentName:"p"}),"\n",'Note: Primary value is still used as cell display value for "Belongs to" as it can have only one associated record.'),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/54e9ee75-4af5-49f6-8cd9-275dc53a8915",alt:"Screenshot 2023-06-27 at 11 12 27 AM"})),(0,o.kt)("h2",{id:"unlinking-records"},"Unlinking records"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on link count to open Child modal"),(0,o.kt)("li",{parentName:"ol"},"Click on Unlink icon against required item")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/dad3cbc7-289d-45a7-9c49-a72264ed36b1",alt:"Screenshot 2023-06-27 at 11 22 00 AM"})),(0,o.kt)("h2",{id:"link-label-reconfiguration"},"Link label reconfiguration"),(0,o.kt)("p",null,"Use column edit menu for ",(0,o.kt)("strong",{parentName:"p"},"Links")," to reconfigure display label"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://github.com/nocodb/nocodb/assets/86527202/1aabdd8c-7102-4917-b0c0-b72e1187b0b7",alt:"Screenshot 2023-06-27 at 11 16 19 AM"})))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a47b7f3a.8d81acfc.js b/packages/noco-docs/dist/assets/js/a47b7f3a.8d81acfc.js new file mode 100644 index 0000000000..b810edf6e2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a47b7f3a.8d81acfc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2550],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),p=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=p(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,g=u["".concat(c,".").concat(m)]||u[m]||d[m]||o;return n?a.createElement(g,i(i({ref:t},l),{},{components:n})):a.createElement(g,i({ref:t},l))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[u]="string"==typeof e?e:r,i[1]=s;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},60406:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var a=n(87462),r=(n(67294),n(3905));const o={title:"Dashboard",description:"Accessing the Dashboard!"},i=void 0,s={unversionedId:"setup-and-usages/dashboard",id:"version-0.109.7/setup-and-usages/dashboard",title:"Dashboard",description:"Accessing the Dashboard!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/010.dashboard.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/dashboard",permalink:"/0.109.7/setup-and-usages/dashboard",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/010.dashboard.md",tags:[],version:"0.109.7",sidebarPosition:10,frontMatter:{title:"Dashboard",description:"Accessing the Dashboard!"},sidebar:"tutorialSidebar",previous:{title:"Demos",permalink:"/0.109.7/getting-started/demos"},next:{title:"Table Operations",permalink:"/0.109.7/setup-and-usages/table-operations"}},c={},p=[{value:"Setup Your First Super Admin",id:"setup-your-first-super-admin",level:2},{value:"Initialize Your First Project",id:"initialize-your-first-project",level:2},{value:"Connecting to External Database",id:"connecting-to-external-database",level:3}],l={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(u,(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"setup-your-first-super-admin"},"Setup Your First Super Admin"),(0,r.kt)("p",null,"Once you have started NocoDB, you can visit the dashboard via ",(0,r.kt)("inlineCode",{parentName:"p"},"example.com"),". You will be redirected to ",(0,r.kt)("inlineCode",{parentName:"p"},"example.com/#/signup"),". "),(0,r.kt)("p",null,"Enter your work email and your password."),(0,r.kt)("img",{width:"1492",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194793294-fa027496-c3c3-44eb-a613-2ba3e3bd26c1.png"}),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Your password has at least 8 letters. No other constraints on case, numbers or special characters.")),(0,r.kt)("h2",{id:"initialize-your-first-project"},"Initialize Your First Project"),(0,r.kt)("p",null,"Once you have logged into NocoDB, you should see ",(0,r.kt)("inlineCode",{parentName:"p"},"My Projects"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/209932699-743ffea2-986f-443f-8198-f56b597de706.png",alt:"Screenshot 2022-12-29 at 2 54 43 PM"})),(0,r.kt)("p",null,"To create a new project, you can click ",(0,r.kt)("inlineCode",{parentName:"p"},"New Project"),". "),(0,r.kt)("p",null,"You need to specify the project name. The data will be stored in ",(0,r.kt)("inlineCode",{parentName:"p"},"NC_DB"),". If it is not specified, a local SQLite will be created and used."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"NC_DB is an environment variable used to store the meta data in the given database.")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/209932936-8fe7334c-1a94-4073-ba19-478efb620808.png",alt:"Screenshot 2022-12-29 at 2 54 57 PM"})),(0,r.kt)("h3",{id:"connecting-to-external-database"},"Connecting to External Database"),(0,r.kt)("p",null,"Click on three-dot menu adjacent to ",(0,r.kt)("inlineCode",{parentName:"p"},"BASES"),". Pick required database option from the menu ",(0,r.kt)("inlineCode",{parentName:"p"},"Connect to new datasource"),". "),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"If you are running NocoDB on Docker and your local DB is running on your host machine, your Host Address would be host.docker.internal instead of localhost.")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/209933294-9327ff16-21db-4aca-bf16-8cea8a1eb415.png",alt:"Screenshot 2022-12-29 at 2 55 39 PM"})),(0,r.kt)("p",null,"Above menu is also accessible from ",(0,r.kt)("inlineCode",{parentName:"p"},"Team & Settings")," > ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),". Click on ",(0,r.kt)("inlineCode",{parentName:"p"},"New")," button to add existing database. "),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219841162-6456c5cf-fd26-4a88-8de6-e8742c043607.png",alt:"image"})),(0,r.kt)("p",null,"You need to specify the project name, API type, and other database parameters."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219841283-1a42f9f6-4677-4e25-8ca9-a060753d1e1e.png",alt:"image"})),(0,r.kt)("p",null,"Currently it supports MySQL, Postgres, MSSQL and SQLite."),(0,r.kt)("p",null,"You can also configure associated SSL & advanced parameters."),(0,r.kt)("img",{width:"689",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189047293-05176c44-e162-495a-a7cd-e02377c1f42c.png"}),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},'You can click Edit Connection JSON and modify SSL settings in "ssl".')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "client": "pg",\n "connection": {\n "host": "<YOUR_HOST>",\n "port": "5432",\n "user": "<YOUR_DB_USER>",\n "password": "<YOUR_DB_PASSWORD>",\n "database": "<YOUR_DB_NAME>",\n "ssl": {\n "require": true,\n "rejectUnauthorized": false,\n "sslMode": "no-verify"\n }\n }\n}\n')),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},'You can click Edit Connection JSON and specify the schema you want to use in "searchPath".')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "client": "pg",\n "connection": {\n ...\n },\n "searchPath": [ "<YOUR_TARGET_SCHEMA>" ]\n}\n')),(0,r.kt)("p",null,"Click ",(0,r.kt)("inlineCode",{parentName:"p"},"Test Database Connection")," to see if the connection can be established or not. NocoDB creates a new ",(0,r.kt)("strong",{parentName:"p"},"empty database")," with specified parameters if the database doesn't exist."),(0,r.kt)("img",{width:"505",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194793513-feabf14f-1f62-4896-b06d-88548251511a.png"}))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a71ccd0b.d3daa956.js b/packages/noco-docs/dist/assets/js/a71ccd0b.d3daa956.js new file mode 100644 index 0000000000..f60ff5f876 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a71ccd0b.d3daa956.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9383],{51259:t=>{t.exports=JSON.parse('{"label":"CSV","permalink":"/tags/csv","allTagsPath":"/tags","count":3,"items":[{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","permalink":"/tables/create-table-via-import"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","permalink":"/tables/import-data-into-existing-table"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a7294da8.f960e7b6.js b/packages/noco-docs/dist/assets/js/a7294da8.f960e7b6.js new file mode 100644 index 0000000000..0a2507e39f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a7294da8.f960e7b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3312],{3905:(t,a,e)=>{e.d(a,{Zo:()=>u,kt:()=>o});var n=e(67294);function l(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function r(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,n)}return e}function d(t){for(var a=1;a<arguments.length;a++){var e=null!=arguments[a]?arguments[a]:{};a%2?r(Object(e),!0).forEach((function(a){l(t,a,e[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):r(Object(e)).forEach((function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a))}))}return t}function p(t,a){if(null==t)return{};var e,n,l=function(t,a){if(null==t)return{};var e,n,l={},r=Object.keys(t);for(n=0;n<r.length;n++)e=r[n],a.indexOf(e)>=0||(l[e]=t[e]);return l}(t,a);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n<r.length;n++)e=r[n],a.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(l[e]=t[e])}return l}var i=n.createContext({}),m=function(t){var a=n.useContext(i),e=a;return t&&(e="function"==typeof t?t(a):d(d({},a),t)),e},u=function(t){var a=m(t.components);return n.createElement(i.Provider,{value:a},t.children)},N="mdxType",k={inlineCode:"code",wrapper:function(t){var a=t.children;return n.createElement(n.Fragment,{},a)}},g=n.forwardRef((function(t,a){var e=t.components,l=t.mdxType,r=t.originalType,i=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),N=m(e),g=l,o=N["".concat(i,".").concat(g)]||N[g]||k[g]||r;return e?n.createElement(o,d(d({ref:a},u),{},{components:e})):n.createElement(o,d({ref:a},u))}));function o(t,a){var e=arguments,l=a&&a.mdxType;if("string"==typeof t||l){var r=e.length,d=new Array(r);d[0]=g;var p={};for(var i in a)hasOwnProperty.call(a,i)&&(p[i]=a[i]);p.originalType=t,p[N]="string"==typeof t?t:l,d[1]=p;for(var m=2;m<r;m++)d[m]=e[m];return n.createElement.apply(null,d)}return n.createElement.apply(null,e)}g.displayName="MDXCreateElement"},60707:(t,a,e)=>{e.r(a),e.d(a,{assets:()=>i,contentTitle:()=>d,default:()=>k,frontMatter:()=>r,metadata:()=>p,toc:()=>m});var n=e(87462),l=(e(67294),e(3905));const r={title:"REST APIs",description:"NocoDB REST API Overview"},d=void 0,p={unversionedId:"developer-resources/rest-apis",id:"version-0.109.7/developer-resources/rest-apis",title:"REST APIs",description:"NocoDB REST API Overview",source:"@site/versioned_docs/version-0.109.7/040.developer-resources/020.rest-apis.md",sourceDirName:"040.developer-resources",slug:"/developer-resources/rest-apis",permalink:"/0.109.7/developer-resources/rest-apis",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/040.developer-resources/020.rest-apis.md",tags:[],version:"0.109.7",sidebarPosition:20,frontMatter:{title:"REST APIs",description:"NocoDB REST API Overview"},sidebar:"tutorialSidebar",previous:{title:"Accessing APIs",permalink:"/0.109.7/developer-resources/accessing-apis"},next:{title:"NocoDB SDK",permalink:"/0.109.7/developer-resources/sdk"}},i={},m=[{value:"API Overview",id:"api-overview",level:2},{value:"Auth APIs",id:"auth-apis",level:3},{value:"Public APIs",id:"public-apis",level:3},{value:"Data APIs",id:"data-apis",level:3},{value:"Meta APIs",id:"meta-apis",level:3},{value:"Query params",id:"query-params",level:2},{value:"Comparison Operators",id:"comparison-operators",level:2},{value:"Comparison Sub-Operators",id:"comparison-sub-operators",level:2},{value:"Logical Operators",id:"logical-operators",level:2}],u={toc:m},N="wrapper";function k(t){let{components:a,...e}=t;return(0,l.kt)(N,(0,n.Z)({},u,e,{components:a,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Once you've created the schemas, you can manipulate the data or invoke actions using the REST APIs. We provide several types of APIs for different usages as below."),(0,l.kt)("h2",{id:"api-overview"},"API Overview"),(0,l.kt)("p",null,"Here's the overview of all APIs. For the details, please check out ",(0,l.kt)("a",{href:"https://all-apis.nocodb.com/",target:"_blank"},"NocoDB API Documentation"),". "),(0,l.kt)("p",null,"You may also interact with the API's resources via ",(0,l.kt)("a",{href:"/0.109.7/developer-resources/accessing-apis#swagger-ui",target:"_blank"},"Swagger UI"),"."),(0,l.kt)("admonition",{type:"note"},(0,l.kt)("p",{parentName:"admonition"},"Currently, the default value for {orgs} is ",(0,l.kt)("b",null,"noco"),". Users will be able to change it in the future release.")),(0,l.kt)("h3",{id:"auth-apis"},"Auth APIs"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Category"),(0,l.kt)("th",{parentName:"tr",align:null},"Method"),(0,l.kt)("th",{parentName:"tr",align:null},"Tag"),(0,l.kt)("th",{parentName:"tr",align:null},"Function Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Path"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"signup"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/user/signup")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"signin"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/user/signin")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"me"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/user/me")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"passwordForgot"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/password/forgot")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"passwordChange"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/password/change")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"passwordReset"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/password/reset/{token}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"tokenRefresh"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/token/refresh")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"passwordResetTokenValidate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/token/validate/{token}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Auth"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"emailValidate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/auth/email/validate/{email}")))),(0,l.kt)("h3",{id:"public-apis"},"Public APIs"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Category"),(0,l.kt)("th",{parentName:"tr",align:null},"Method"),(0,l.kt)("th",{parentName:"tr",align:null},"Tag"),(0,l.kt)("th",{parentName:"tr",align:null},"Function Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Path"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedBaseGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-base/{sharedBaseUuid}/meta")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"dataList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/rows")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"dataNestedList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/rows/{rowId}/{relationType}/{columnName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"dataCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/rows")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"csvExport"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/rows/export/{type}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"dataRelationList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/nested/{columnName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedViewMetaGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/meta")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Public"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"public"),(0,l.kt)("td",{parentName:"tr",align:null},"groupedDataList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/public/shared-view/{sharedViewUuid}/group/{columnId}")))),(0,l.kt)("h3",{id:"data-apis"},"Data APIs"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Category"),(0,l.kt)("th",{parentName:"tr",align:null},"Method"),(0,l.kt)("th",{parentName:"tr",align:null},"Tag"),(0,l.kt)("th",{parentName:"tr",align:null},"Function Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Path"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"bulkDelete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"bulkCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"bulkUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"bulkUpdateAll"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/all")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"bulkDeleteAll"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/bulk/{orgs}/{projectName}/{tableName}/all")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"findOne"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/find-one")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"groupBy"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/groupby")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"exist"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}/exist")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"count"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/count")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableRow"),(0,l.kt)("td",{parentName:"tr",align:null},"groupedDataList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/group/{columnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"findOne"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/find-one")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"groupBy"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/groupby")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"exist"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}/exist")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/{rowId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"count"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/count")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Data"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewRow"),(0,l.kt)("td",{parentName:"tr",align:null},"groupedDataList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/data/{orgs}/{projectName}/{tableName}/views/{viewName}/group/{columnId}")))),(0,l.kt)("h3",{id:"meta-apis"},"Meta APIs"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Category"),(0,l.kt)("th",{parentName:"tr",align:null},"Method"),(0,l.kt)("th",{parentName:"tr",align:null},"Tag"),(0,l.kt)("th",{parentName:"tr",align:null},"Function Name"),(0,l.kt)("th",{parentName:"tr",align:null},"Path"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"apiToken"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/api-tokens")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"apiToken"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/api-tokens")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"apiToken"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/api-tokens/{token}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"projectUserList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/users")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"projectUserAdd"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/users")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"projectUserUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/users/{userId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"projectUserRemove"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/users/{userId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"auth"),(0,l.kt)("td",{parentName:"tr",align:null},"projectUserResendInvite"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/users/{userId}/resend-invite")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTable"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/tables")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTable"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/tables")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/columns")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/columns/{columnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/columns/{columnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"primaryColumnSet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/columns/{columnId}/primary")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"get"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/filters")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/filters")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"get"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"childrenRead"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/filters/{filterGroupId}/children")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableSort"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/sorts")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableSort"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/sorts")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableSort"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/sorts/{sortId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableSort"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/sorts/{sortId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableSort"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/sorts/{sortId}/api/v1/db")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/hooks/{hookId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/hooks/{hookId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/hooks")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/hooks")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"test"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/hooks/test")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhook"),(0,l.kt)("td",{parentName:"tr",align:null},"samplePayloadGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/hooks/samplePayload/{operation}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhookFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/hooks/{hookId}/filters")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbTableWebhookFilter"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/hooks/{hookId}/filters")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/views")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"reorder"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/reorder")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"formCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/forms")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"formUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/forms/{formViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"formRead"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/forms/{formViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"formColumnUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/form-columns/{formViewColumnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"galleryCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/galleries")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"galleryUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/galleries/{galleryViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"galleryRead"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/galleries/{galleryViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"kanbanCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/kanbans")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"kanbanUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/kanban/{kanbanViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"kanbanRead"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/kanbans/{kanbanViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"mapCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/maps")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"mapUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/maps/{mapViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"mapRead"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/maps/{mapViewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"gridCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/tables/{tableId}/grids")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"gridColumnsList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/grids/{gridId}/grid-columns")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"gridColumnUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/grid-columns/{columnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"showAllColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/show-all")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbView"),(0,l.kt)("td",{parentName:"tr",align:null},"hideAllColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/hide-all")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/columns")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/columns")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewColumn"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/columns/{columnId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewShare"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/share")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewShare"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/share")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewShare"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/share")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"dbViewShare"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/views/{viewId}/share")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"plugin"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/plugins")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"plugin"),(0,l.kt)("td",{parentName:"tr",align:null},"status"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/plugins/{pluginTitle}/status")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"plugin"),(0,l.kt)("td",{parentName:"tr",align:null},"test"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/plugins/test")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"PATCH"),(0,l.kt)("td",{parentName:"tr",align:null},"plugin"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/plugins/{pluginId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"plugin"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/plugins/{pluginId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"metaGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/info")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"modelVisibilityList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/visibility-rules")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"modelVisibilitySet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/visibility-rules")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"read"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"auditList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/audits")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"metaDiffGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/meta-diff")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"metaDiffSync"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/meta-diff")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedBaseGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/shared")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedBaseDisable"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/shared")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedBaseCreate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/shared")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"project"),(0,l.kt)("td",{parentName:"tr",align:null},"sharedBaseUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/{projectId}/shared")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"storage"),(0,l.kt)("td",{parentName:"tr",align:null},"upload"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/storage/upload")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"storage"),(0,l.kt)("td",{parentName:"tr",align:null},"uploadByUrl"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/storage/upload-by-url")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"commentList"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/audits/comments")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"commentRow"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/audits/comments")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"commentCount"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/audits/comments/count")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"auditRowUpdate"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/audits/update")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"cacheGet"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/cache")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"cacheDelete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/cache")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"testConnection"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/projects/connection/test")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"appInfo"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/db/meta/nocodb/info")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"appVersion"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/version")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"appHealth"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/health")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"utils"),(0,l.kt)("td",{parentName:"tr",align:null},"aggregatedMetaInfo"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/aggregated-meta-info")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"orgUsers"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/users")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"orgUsers"),(0,l.kt)("td",{parentName:"tr",align:null},"add"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/users")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Patch"),(0,l.kt)("td",{parentName:"tr",align:null},"orgUsers"),(0,l.kt)("td",{parentName:"tr",align:null},"update"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/users/{userId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"orgUsers"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/users/{userId}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"orgTokens"),(0,l.kt)("td",{parentName:"tr",align:null},"list"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/tokens")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"orgTokens"),(0,l.kt)("td",{parentName:"tr",align:null},"create"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/tokens")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Delete"),(0,l.kt)("td",{parentName:"tr",align:null},"orgTokens"),(0,l.kt)("td",{parentName:"tr",align:null},"delete"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/tokens/{token}")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Get"),(0,l.kt)("td",{parentName:"tr",align:null},"orgAppSettings"),(0,l.kt)("td",{parentName:"tr",align:null},"get"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/app-settings")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"Meta"),(0,l.kt)("td",{parentName:"tr",align:null},"Post"),(0,l.kt)("td",{parentName:"tr",align:null},"orgAppSettings"),(0,l.kt)("td",{parentName:"tr",align:null},"set"),(0,l.kt)("td",{parentName:"tr",align:null},"/api/v1/app-settings")))),(0,l.kt)("h2",{id:"query-params"},"Query params"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"th"},"Name")),(0,l.kt)("th",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"th"},"Alias")),(0,l.kt)("th",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"th"},"Use case")),(0,l.kt)("th",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"th"},"Default value")),(0,l.kt)("th",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"th"},"Example value")))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#comparison-operators"},"where")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#comparison-operators"},"w")),(0,l.kt)("td",{parentName:"tr",align:null},"Complicated where conditions"),(0,l.kt)("td",{parentName:"tr",align:null}),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("inlineCode",{parentName:"td"},"(colName,eq,colValue)~or(colName2,gt,colValue2)")," ",(0,l.kt)("br",null),(0,l.kt)("a",{parentName:"td",href:"#comparison-operators"},"Usage: Comparison operators")," ",(0,l.kt)("br",null),(0,l.kt)("a",{parentName:"td",href:"#logical-operators"},"Usage: Logical operators"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"limit"),(0,l.kt)("td",{parentName:"tr",align:null},"l"),(0,l.kt)("td",{parentName:"tr",align:null},"Number of rows to get (SQL limit value)"),(0,l.kt)("td",{parentName:"tr",align:null},"10"),(0,l.kt)("td",{parentName:"tr",align:null},"20")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"offset"),(0,l.kt)("td",{parentName:"tr",align:null},"o"),(0,l.kt)("td",{parentName:"tr",align:null},"Offset for pagination (SQL offset value)"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"20")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"sort"),(0,l.kt)("td",{parentName:"tr",align:null},"s"),(0,l.kt)("td",{parentName:"tr",align:null},"Sort by column name, Use ",(0,l.kt)("inlineCode",{parentName:"td"},"-")," as prefix for descending sort"),(0,l.kt)("td",{parentName:"tr",align:null}),(0,l.kt)("td",{parentName:"tr",align:null},"column_name")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"fields"),(0,l.kt)("td",{parentName:"tr",align:null},"f"),(0,l.kt)("td",{parentName:"tr",align:null},"Required column names in result"),(0,l.kt)("td",{parentName:"tr",align:null},"*"),(0,l.kt)("td",{parentName:"tr",align:null},"column_name1,column_name2")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"shuffle"),(0,l.kt)("td",{parentName:"tr",align:null},"r"),(0,l.kt)("td",{parentName:"tr",align:null},"Shuffle the result for pagination"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"1 (Only allow 0 or 1. Other values would see it as 0)")))),(0,l.kt)("h2",{id:"comparison-operators"},"Comparison Operators"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Operation"),(0,l.kt)("th",{parentName:"tr",align:null},"Meaning"),(0,l.kt)("th",{parentName:"tr",align:null},"Example"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"eq"),(0,l.kt)("td",{parentName:"tr",align:null},"equal"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"neq"),(0,l.kt)("td",{parentName:"tr",align:null},"not equal"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,neq,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"not"),(0,l.kt)("td",{parentName:"tr",align:null},"not equal (alias of neq)"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,not,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"gt"),(0,l.kt)("td",{parentName:"tr",align:null},"greater than"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,gt,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ge"),(0,l.kt)("td",{parentName:"tr",align:null},"greater or equal"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,ge,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"lt"),(0,l.kt)("td",{parentName:"tr",align:null},"less than"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,lt,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"le"),(0,l.kt)("td",{parentName:"tr",align:null},"less or equal"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,le,colValue)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"is"),(0,l.kt)("td",{parentName:"tr",align:null},"is"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,is,true/false/null)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"isnot"),(0,l.kt)("td",{parentName:"tr",align:null},"is not"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isnot,true/false/null)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"in"),(0,l.kt)("td",{parentName:"tr",align:null},"in"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,in,val1,val2,val3,val4)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"btw"),(0,l.kt)("td",{parentName:"tr",align:null},"between"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,btw,val1,val2)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nbtw"),(0,l.kt)("td",{parentName:"tr",align:null},"not between"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,nbtw,val1,val2)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"like"),(0,l.kt)("td",{parentName:"tr",align:null},"like"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,like,%name)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"isWithin"),(0,l.kt)("td",{parentName:"tr",align:null},"is Within (Available in ",(0,l.kt)("inlineCode",{parentName:"td"},"Date")," and ",(0,l.kt)("inlineCode",{parentName:"td"},"DateTime")," only)"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,sub_op)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"allof"),(0,l.kt)("td",{parentName:"tr",align:null},"includes all of"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,allof,val1,val2,...)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"anyof"),(0,l.kt)("td",{parentName:"tr",align:null},"includes any of"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,anyof,val1,val2,...)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nallof"),(0,l.kt)("td",{parentName:"tr",align:null},"does not include all of (includes none or some, but not all of)"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,nallof,val1,val2,...)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nanyof"),(0,l.kt)("td",{parentName:"tr",align:null},"does not include any of (includes none of)"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,nanyof,val1,val2,...)")))),(0,l.kt)("h2",{id:"comparison-sub-operators"},"Comparison Sub-Operators"),(0,l.kt)("p",null,"The following sub-operators are available in ",(0,l.kt)("inlineCode",{parentName:"p"},"Date")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"DateTime")," columns."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Operation"),(0,l.kt)("th",{parentName:"tr",align:null},"Meaning"),(0,l.kt)("th",{parentName:"tr",align:null},"Example"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"today"),(0,l.kt)("td",{parentName:"tr",align:null},"today"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,today)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"tomorrow"),(0,l.kt)("td",{parentName:"tr",align:null},"tomorrow"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,tomorrow)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"yesterday"),(0,l.kt)("td",{parentName:"tr",align:null},"yesterday"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,yesterday)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"oneWeekAgo"),(0,l.kt)("td",{parentName:"tr",align:null},"one week ago"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,oneWeekAgo)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"oneWeekFromNow"),(0,l.kt)("td",{parentName:"tr",align:null},"one week from now"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,oneWeekFromNow)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"oneMonthAgo"),(0,l.kt)("td",{parentName:"tr",align:null},"one month ago"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,oneMonthAgo)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"oneMonthFromNow"),(0,l.kt)("td",{parentName:"tr",align:null},"one month from now"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,oneMonthFromNow)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"daysAgo"),(0,l.kt)("td",{parentName:"tr",align:null},"number of days ago"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,daysAgo,10)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"daysFromNow"),(0,l.kt)("td",{parentName:"tr",align:null},"number of days from now"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,daysFromNow,10)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"exactDate"),(0,l.kt)("td",{parentName:"tr",align:null},"exact date"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,eq,exactDate,2022-02-02)")))),(0,l.kt)("p",null,"For ",(0,l.kt)("inlineCode",{parentName:"p"},"isWithin")," in ",(0,l.kt)("inlineCode",{parentName:"p"},"Date")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"DateTime")," columns, the different set of sub-operators are used."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Operation"),(0,l.kt)("th",{parentName:"tr",align:null},"Meaning"),(0,l.kt)("th",{parentName:"tr",align:null},"Example"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"pastWeek"),(0,l.kt)("td",{parentName:"tr",align:null},"the past week"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,pastWeek)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"pastMonth"),(0,l.kt)("td",{parentName:"tr",align:null},"the past month"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,pastMonth)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"pastYear"),(0,l.kt)("td",{parentName:"tr",align:null},"the past year"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,pastYear)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nextWeek"),(0,l.kt)("td",{parentName:"tr",align:null},"the next week"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,nextWeek)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nextMonth"),(0,l.kt)("td",{parentName:"tr",align:null},"the next month"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,nextMonth)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nextYear"),(0,l.kt)("td",{parentName:"tr",align:null},"the next year"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,nextYear)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"nextNumberOfDays"),(0,l.kt)("td",{parentName:"tr",align:null},"the next number of days"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,nextNumberOfDays,10)")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"pastNumberOfDays"),(0,l.kt)("td",{parentName:"tr",align:null},"the past number of days"),(0,l.kt)("td",{parentName:"tr",align:null},"(colName,isWithin,pastNumberOfDays,10)")))),(0,l.kt)("h2",{id:"logical-operators"},"Logical Operators"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Operation"),(0,l.kt)("th",{parentName:"tr",align:null},"Example"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"~or"),(0,l.kt)("td",{parentName:"tr",align:null},"(checkNumber,eq,JM555205)~or((amount, gt, 200)~and(amount, lt, 2000))")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"~and"),(0,l.kt)("td",{parentName:"tr",align:null},"(checkNumber,eq,JM555205)~and((amount, gt, 200)~and(amount, lt, 2000))")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"~not"),(0,l.kt)("td",{parentName:"tr",align:null},"~not(checkNumber,eq,JM555205)")))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/a9993c14.d9ac97ff.js b/packages/noco-docs/dist/assets/js/a9993c14.d9ac97ff.js new file mode 100644 index 0000000000..e6036cebd1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/a9993c14.d9ac97ff.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8750],{86137:e=>{e.exports=JSON.parse('{"label":"Table details","permalink":"/tags/table-details","allTagsPath":"/tags","count":1,"items":[{"id":"table-details/table-details-overview","title":"Table details overview","description":"Table details overview","permalink":"/table-details/table-details-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/aa1c05f4.378a4f82.js b/packages/noco-docs/dist/assets/js/aa1c05f4.378a4f82.js new file mode 100644 index 0000000000..c026b6b8db --- /dev/null +++ b/packages/noco-docs/dist/assets/js/aa1c05f4.378a4f82.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3151],{81164:s=>{s.exports=JSON.parse('{"label":"Visibility","permalink":"/tags/visibility","allTagsPath":"/tags","count":1,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/abbfc25c.8291f979.js b/packages/noco-docs/dist/assets/js/abbfc25c.8291f979.js new file mode 100644 index 0000000000..da4605be5e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/abbfc25c.8291f979.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6713],{3905:(e,t,l)=>{l.d(t,{Zo:()=>p,kt:()=>c});var i=l(67294);function n(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function o(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,i)}return l}function a(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?o(Object(l),!0).forEach((function(t){n(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):o(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function r(e,t){if(null==e)return{};var l,i,n=function(e,t){if(null==e)return{};var l,i,n={},o=Object.keys(e);for(i=0;i<o.length;i++)l=o[i],t.indexOf(l)>=0||(n[l]=e[l]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)l=o[i],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(n[l]=e[l])}return n}var s=i.createContext({}),d=function(e){var t=i.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):a(a({},t),e)),l},p=function(e){var t=d(e.components);return i.createElement(s.Provider,{value:t},e.children)},u="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},f=i.forwardRef((function(e,t){var l=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),u=d(l),f=n,c=u["".concat(s,".").concat(f)]||u[f]||k[f]||o;return l?i.createElement(c,a(a({ref:t},p),{},{components:l})):i.createElement(c,a({ref:t},p))}));function c(e,t){var l=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=l.length,a=new Array(o);a[0]=f;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[u]="string"==typeof e?e:n,a[1]=r;for(var d=2;d<o;d++)a[d]=l[d];return i.createElement.apply(null,a)}return i.createElement.apply(null,l)}f.displayName="MDXCreateElement"},59661:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>k,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var i=l(87462),n=(l(67294),l(3905));const o={title:"Lookup",description:"This article explains how to create & work with a Lookup field.",tags:["Fields","Field types","Links based types","Lookup"],keywords:["Fields","Field types","Links based types","Lookup","Create lookup field"]},a=void 0,r={unversionedId:"fields/field-types/links-based/lookup",id:"fields/field-types/links-based/lookup",title:"Lookup",description:"This article explains how to create & work with a Lookup field.",source:"@site/docs/070.fields/040.field-types/040.links-based/020.lookup.md",sourceDirName:"070.fields/040.field-types/040.links-based",slug:"/fields/field-types/links-based/lookup",permalink:"/fields/field-types/links-based/lookup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/040.links-based/020.lookup.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Links based types",permalink:"/tags/links-based-types"},{label:"Lookup",permalink:"/tags/lookup"}],version:"current",sidebarPosition:20,frontMatter:{title:"Lookup",description:"This article explains how to create & work with a Lookup field.",tags:["Fields","Field types","Links based types","Lookup"],keywords:["Fields","Field types","Links based types","Lookup","Create lookup field"]},sidebar:"tutorialSidebar",previous:{title:"Links",permalink:"/fields/field-types/links-based/links"},next:{title:"Rollup",permalink:"/fields/field-types/links-based/rollup"}},s={},d=[{value:"Create a Lookup Field",id:"create-a-lookup-field",level:2},{value:"Similar links-based fields",id:"similar-links-based-fields",level:2}],p={toc:d},u="wrapper";function k(e){let{components:t,...o}=e;return(0,n.kt)(u,(0,i.Z)({},p,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Lookup")," fields help bring additional field information from related table into the current table. This is useful when you want to display additional information about a record in a table. For example, if you have a table of ",(0,n.kt)("inlineCode",{parentName:"p"},"Orders")," and a table of ",(0,n.kt)("inlineCode",{parentName:"p"},"Customers"),", you can use a ",(0,n.kt)("inlineCode",{parentName:"p"},"Lookup")," field to display the customer's name and address in the ",(0,n.kt)("inlineCode",{parentName:"p"},"Orders")," table."),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"Lookup fields are read-only. You cannot edit the values in a lookup field."),(0,n.kt)("li",{parentName:"ul"},"Lookup fields are available only for ",(0,n.kt)("inlineCode",{parentName:"li"},"Belongs-to")," relational links in hosted cloud version. The additional processing complexity for ",(0,n.kt)("inlineCode",{parentName:"li"},"Has-many")," and ",(0,n.kt)("inlineCode",{parentName:"li"},"Many-to-many")," relational links outweighs the benefits of having lookup fields for these links. OSS will continue to support lookup fields for all relational links."))),(0,n.kt)("h2",{id:"create-a-lookup-field"},"Create a Lookup Field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Lookup")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Select the link field from the dropdown. This is the field that links the current table to the related table."),(0,n.kt)("li",{parentName:"ol"},"Select the field for display from the dropdown. This is the field that will be displayed in the current table."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:l(87425).Z,width:"2878",height:"1428"})),(0,n.kt)("h2",{id:"similar-links-based-fields"},"Similar links-based fields"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/links"},"Links")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/rollup"},"Rollup"))))}k.isMDXComponent=!0},87425:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/lookup-440e68c526f06230bf2783298951a749.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ae730630.b54065e8.js b/packages/noco-docs/dist/assets/js/ae730630.b54065e8.js new file mode 100644 index 0000000000..1dae1dedcd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ae730630.b54065e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9707],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>b});var o=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,o,a=function(e,t){if(null==e)return{};var r,o,a={},n=Object.keys(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)r=n[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=o.createContext({}),s=function(e){var t=o.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},c=function(e){var t=s(e.components);return o.createElement(p.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,a=e.mdxType,n=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=s(r),f=a,b=u["".concat(p,".").concat(f)]||u[f]||d[f]||n;return r?o.createElement(b,i(i({ref:t},c),{},{components:r})):o.createElement(b,i({ref:t},c))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=r.length,i=new Array(n);i[0]=f;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<n;s++)i[s]=r[s];return o.createElement.apply(null,i)}return o.createElement.apply(null,r)}f.displayName="MDXCreateElement"},90229:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var o=r(87462),a=(r(67294),r(3905));const n={title:"Table operations overview",description:"Learn how to work with filters, sort, group by, and more in NocoDB.",tags:["Table operations","Overview"],keywords:["NocoDB table operations","table operations overview","hide field","show field","filter","sort","group by","record height","quick search","download","search"]},i=void 0,l={unversionedId:"table-operations/overview",id:"table-operations/overview",title:"Table operations overview",description:"Learn how to work with filters, sort, group by, and more in NocoDB.",source:"@site/docs/060.table-operations/010.overview.md",sourceDirName:"060.table-operations",slug:"/table-operations/overview",permalink:"/table-operations/overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/010.overview.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Table operations overview",description:"Learn how to work with filters, sort, group by, and more in NocoDB.",tags:["Table operations","Overview"],keywords:["NocoDB table operations","table operations overview","hide field","show field","filter","sort","group by","record height","quick search","download","search"]},sidebar:"tutorialSidebar",previous:{title:"Actions on table",permalink:"/tables/actions-on-table"},next:{title:"Hide & reorder fields",permalink:"/table-operations/field-operations"}},p={},s=[],c={toc:s},u="wrapper";function d(e){let{components:t,...r}=e;return(0,a.kt)(u,(0,o.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"The toolbar provides a set of tools to interact with the data in the table. The toolbar is located at the top of the view area."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"field-operations"},"Hide fields & reorder")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"filter"},"Filter")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"row-height"},"Row height")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"download"},"Download"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ae9857c7.492b458b.js b/packages/noco-docs/dist/assets/js/ae9857c7.492b458b.js new file mode 100644 index 0000000000..31c365d801 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ae9857c7.492b458b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6714],{86741:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"0.109.7","label":"0.109.7 - Old UI","banner":"unmaintained","badge":true,"noIndex":false,"className":"docs-version-0.109.7","isLast":false,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Welcome","href":"/0.109.7/","docId":"index"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Installation","href":"/0.109.7/getting-started/installation","docId":"getting-started/installation"},{"type":"link","label":"Environment Variables","href":"/0.109.7/getting-started/environment-variables","docId":"getting-started/environment-variables"},{"type":"link","label":"Upgrading","href":"/0.109.7/getting-started/upgrading","docId":"getting-started/upgrading"},{"type":"link","label":"Demos","href":"/0.109.7/getting-started/demos","docId":"getting-started/demos"}]},{"type":"category","label":"Product","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Dashboard","href":"/0.109.7/setup-and-usages/dashboard","docId":"setup-and-usages/dashboard"},{"type":"link","label":"Table Operations","href":"/0.109.7/setup-and-usages/table-operations","docId":"setup-and-usages/table-operations"},{"type":"link","label":"Column Operations","href":"/0.109.7/setup-and-usages/column-operations","docId":"setup-and-usages/column-operations"},{"type":"link","label":"Column Types","href":"/0.109.7/setup-and-usages/column-types","docId":"setup-and-usages/column-types"},{"type":"link","label":"Code Snippets","href":"/0.109.7/setup-and-usages/code-snippets","docId":"setup-and-usages/code-snippets"},{"type":"link","label":"Link To Another Record","href":"/0.109.7/setup-and-usages/link-to-another-record","docId":"setup-and-usages/link-to-another-record"},{"type":"link","label":"Lookup","href":"/0.109.7/setup-and-usages/lookup","docId":"setup-and-usages/lookup"},{"type":"link","label":"Rollup","href":"/0.109.7/setup-and-usages/rollup","docId":"setup-and-usages/rollup"},{"type":"link","label":"Formulas","href":"/0.109.7/setup-and-usages/formulas","docId":"setup-and-usages/formulas"},{"type":"link","label":"Primary Key","href":"/0.109.7/setup-and-usages/primary-key","docId":"setup-and-usages/primary-key"},{"type":"link","label":"Display Value","href":"/0.109.7/setup-and-usages/display-value","docId":"setup-and-usages/display-value"},{"type":"link","label":"Sync Schema","href":"/0.109.7/setup-and-usages/sync-schema","docId":"setup-and-usages/sync-schema"},{"type":"link","label":"Share Base","href":"/0.109.7/setup-and-usages/share-base","docId":"setup-and-usages/share-base"},{"type":"link","label":"Share View","href":"/0.109.7/setup-and-usages/share-view","docId":"setup-and-usages/share-view"},{"type":"link","label":"Keyboard Maneuver","href":"/0.109.7/setup-and-usages/keyboard-maneuver","docId":"setup-and-usages/keyboard-maneuver"},{"type":"link","label":"Views","href":"/0.109.7/setup-and-usages/views","docId":"setup-and-usages/views"},{"type":"link","label":"Account Settings","href":"/0.109.7/setup-and-usages/account-settings","docId":"setup-and-usages/account-settings"},{"type":"link","label":"Languages","href":"/0.109.7/setup-and-usages/languages","docId":"setup-and-usages/languages"},{"type":"link","label":"Expanded Form","href":"/0.109.7/setup-and-usages/expanded-form","docId":"setup-and-usages/expanded-form"},{"type":"link","label":"Import Airtable to NocoDB","href":"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free","docId":"setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free"},{"type":"link","label":"Usage Information","href":"/0.109.7/setup-and-usages/usage-information","docId":"setup-and-usages/usage-information"},{"type":"link","label":"Links","href":"/0.109.7/setup-and-usages/links","docId":"setup-and-usages/links"},{"type":"link","label":"Team & Auth","href":"/0.109.7/setup-and-usages/team-and-auth","docId":"setup-and-usages/team-and-auth"},{"type":"link","label":"Data Sources","href":"/0.109.7/setup-and-usages/meta-management","docId":"setup-and-usages/meta-management"},{"type":"link","label":"Audit","href":"/0.109.7/setup-and-usages/audit","docId":"setup-and-usages/audit"},{"type":"link","label":"Project settings","href":"/0.109.7/setup-and-usages/project-settings","docId":"setup-and-usages/project-settings"}]},{"type":"category","label":"Developer Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Accessing APIs","href":"/0.109.7/developer-resources/accessing-apis","docId":"developer-resources/accessing-apis"},{"type":"link","label":"REST APIs","href":"/0.109.7/developer-resources/rest-apis","docId":"developer-resources/rest-apis"},{"type":"link","label":"NocoDB SDK","href":"/0.109.7/developer-resources/sdk","docId":"developer-resources/sdk"},{"type":"link","label":"Webhooks","href":"/0.109.7/developer-resources/webhooks","docId":"developer-resources/webhooks"},{"type":"link","label":"Upload via API","href":"/0.109.7/developer-resources/upload-via-api","docId":"developer-resources/upload-via-api"}]},{"type":"category","label":"Engineering","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture Overview","href":"/0.109.7/engineering/architecture","docId":"engineering/architecture"},{"type":"link","label":"Repository structure","href":"/0.109.7/engineering/repository-structure","docId":"engineering/repository-structure"},{"type":"link","label":"Development Setup","href":"/0.109.7/engineering/development-setup","docId":"engineering/development-setup"},{"type":"link","label":"Writing Unit Tests","href":"/0.109.7/engineering/unit-testing","docId":"engineering/unit-testing"},{"type":"link","label":"Playwright E2E Testing","href":"/0.109.7/engineering/playwright","docId":"engineering/playwright"},{"type":"link","label":"Releases & Builds","href":"/0.109.7/engineering/builds-and-releases","docId":"engineering/builds-and-releases"},{"type":"link","label":"i18n translation","href":"/0.109.7/engineering/translation","docId":"engineering/translation"}]},{"type":"link","label":"FAQs","href":"/0.109.7/FAQs","docId":"FAQs"}]},"docs":{"developer-resources/accessing-apis":{"id":"developer-resources/accessing-apis","title":"Accessing APIs","description":"How to access NocoDB APIs with Auth or API token?","sidebar":"tutorialSidebar"},"developer-resources/rest-apis":{"id":"developer-resources/rest-apis","title":"REST APIs","description":"NocoDB REST API Overview","sidebar":"tutorialSidebar"},"developer-resources/sdk":{"id":"developer-resources/sdk","title":"NocoDB SDK","description":"NocoDB SDK Overview","sidebar":"tutorialSidebar"},"developer-resources/upload-via-api":{"id":"developer-resources/upload-via-api","title":"Upload via API","description":"Upload files locally present or from public remote URL via API","sidebar":"tutorialSidebar"},"developer-resources/webhooks":{"id":"developer-resources/webhooks","title":"Webhooks","description":"Webhooks allows user to trigger on certain operations on following database operations","sidebar":"tutorialSidebar"},"engineering/architecture":{"id":"engineering/architecture","title":"Architecture Overview","description":"Simple overview of NocoDB architecture","sidebar":"tutorialSidebar"},"engineering/builds-and-releases":{"id":"engineering/builds-and-releases","title":"Releases & Builds","description":"NocoDB creates Docker and Binaries for each PR","sidebar":"tutorialSidebar"},"engineering/development-setup":{"id":"engineering/development-setup","title":"Development Setup","description":"How to set-up your development environment","sidebar":"tutorialSidebar"},"engineering/playwright":{"id":"engineering/playwright","title":"Playwright E2E Testing","description":"Overview to playwright based e2e tests","sidebar":"tutorialSidebar"},"engineering/repository-structure":{"id":"engineering/repository-structure","title":"Repository structure","description":"Repository Structure","sidebar":"tutorialSidebar"},"engineering/translation":{"id":"engineering/translation","title":"i18n translation","description":"Contribute to NocoDB\'s i18n translation","sidebar":"tutorialSidebar"},"engineering/unit-testing":{"id":"engineering/unit-testing","title":"Writing Unit Tests","description":"Overview to Unit Testing","sidebar":"tutorialSidebar"},"FAQs":{"id":"FAQs","title":"FAQs","description":"General FAQs","sidebar":"tutorialSidebar"},"getting-started/demos":{"id":"getting-started/demos","title":"Demos","description":"NocoDB Demos","sidebar":"tutorialSidebar"},"getting-started/environment-variables":{"id":"getting-started/environment-variables","title":"Environment Variables","description":"Environment Variables for NocoDB!","sidebar":"tutorialSidebar"},"getting-started/installation":{"id":"getting-started/installation","title":"Installation","description":"Simple installation - takes about three minutes!","sidebar":"tutorialSidebar"},"getting-started/upgrading":{"id":"getting-started/upgrading","title":"Upgrading","description":"Upgrading NocoDB : Docker, Node and Homebrew!","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"NocoDB Documentation","sidebar":"tutorialSidebar"},"setup-and-usages/account-settings":{"id":"setup-and-usages/account-settings","title":"Account Settings","description":"NocoDB provides Account Settings for managing your account or more for super admin","sidebar":"tutorialSidebar"},"setup-and-usages/audit":{"id":"setup-and-usages/audit","title":"Audit","description":"NocoDB provides all the user operation logs under Audit log","sidebar":"tutorialSidebar"},"setup-and-usages/code-snippets":{"id":"setup-and-usages/code-snippets","title":"Code Snippets","description":"Code Snippets Examples in different ways","sidebar":"tutorialSidebar"},"setup-and-usages/column-operations":{"id":"setup-and-usages/column-operations","title":"Column Operations","description":"Column Operations: Fields, Sort & Filter","sidebar":"tutorialSidebar"},"setup-and-usages/column-types":{"id":"setup-and-usages/column-types","title":"Column Types","description":"NocoDB Column Types Overview","sidebar":"tutorialSidebar"},"setup-and-usages/dashboard":{"id":"setup-and-usages/dashboard","title":"Dashboard","description":"Accessing the Dashboard!","sidebar":"tutorialSidebar"},"setup-and-usages/display-value":{"id":"setup-and-usages/display-value","title":"Display Value","description":"Understanding Display Value in NocoDB!","sidebar":"tutorialSidebar"},"setup-and-usages/expanded-form":{"id":"setup-and-usages/expanded-form","title":"Expanded Form","description":"NocoDB provides Expanded Form to let you edit your data easily","sidebar":"tutorialSidebar"},"setup-and-usages/formulas":{"id":"setup-and-usages/formulas","title":"Formulas","description":"NocoDB Formulas Syntaxes and Functions","sidebar":"tutorialSidebar"},"setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free":{"id":"setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free","title":"Import Airtable to NocoDB","description":"A complete import of your Airtable to any MySQL, Postgres, SQLite and SQL server databases within minutes","sidebar":"tutorialSidebar"},"setup-and-usages/keyboard-maneuver":{"id":"setup-and-usages/keyboard-maneuver","title":"Keyboard Maneuver","description":"Keyboard shortcuts","sidebar":"tutorialSidebar"},"setup-and-usages/languages":{"id":"setup-and-usages/languages","title":"Languages","description":"Multiple languages on Dashboard!","sidebar":"tutorialSidebar"},"setup-and-usages/link-to-another-record":{"id":"setup-and-usages/link-to-another-record","title":"Link To Another Record","description":"Understanding Link To Another Record (LTAR) Columns!","sidebar":"tutorialSidebar"},"setup-and-usages/links":{"id":"setup-and-usages/links","title":"Links","description":"Understanding Link Columns!","sidebar":"tutorialSidebar"},"setup-and-usages/lookup":{"id":"setup-and-usages/lookup","title":"Lookup","description":"Understanding Lookup Column!","sidebar":"tutorialSidebar"},"setup-and-usages/meta-management":{"id":"setup-and-usages/meta-management","title":"Data Sources","description":"NocoDB Data-Source sync, access control & re-config","sidebar":"tutorialSidebar"},"setup-and-usages/primary-key":{"id":"setup-and-usages/primary-key","title":"Primary Key","description":"Understanding Primary Key in NocoDB!","sidebar":"tutorialSidebar"},"setup-and-usages/project-settings":{"id":"setup-and-usages/project-settings","title":"Project settings","description":"General project configuration options","sidebar":"tutorialSidebar"},"setup-and-usages/rollup":{"id":"setup-and-usages/rollup","title":"Rollup","description":"Understanding Rollup Column!","sidebar":"tutorialSidebar"},"setup-and-usages/share-base":{"id":"setup-and-usages/share-base","title":"Share Base","description":"Procedures to share a base & generating embedded iframe","sidebar":"tutorialSidebar"},"setup-and-usages/share-view":{"id":"setup-and-usages/share-view","title":"Share View","description":"Procedures to share a view","sidebar":"tutorialSidebar"},"setup-and-usages/sync-schema":{"id":"setup-and-usages/sync-schema","title":"Sync Schema","description":"Schema changes made to database from outside NocoDB GUI can be synced","sidebar":"tutorialSidebar"},"setup-and-usages/table-operations":{"id":"setup-and-usages/table-operations","title":"Table Operations","description":"Table Operations: Row, Column, Quick Import, Export & Import","sidebar":"tutorialSidebar"},"setup-and-usages/team-and-auth":{"id":"setup-and-usages/team-and-auth","title":"Team & Auth","description":"Breakdown of roles & permissions for team user management","sidebar":"tutorialSidebar"},"setup-and-usages/usage-information":{"id":"setup-and-usages/usage-information","title":"Usage Information","description":"Non-sensitive and anonymous usage information","sidebar":"tutorialSidebar"},"setup-and-usages/views":{"id":"setup-and-usages/views","title":"Views","description":"Understanding Views in NocoDB!","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b2206ab4.4ae837f6.js b/packages/noco-docs/dist/assets/js/b2206ab4.4ae837f6.js new file mode 100644 index 0000000000..1514c756b1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b2206ab4.4ae837f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2384],{96212:e=>{e.exports=JSON.parse('{"label":"Primary Key","permalink":"/tags/primary-key","allTagsPath":"/tags","count":1,"items":[{"id":"fields/primary-key","title":"Primary key","description":"This article explains what a primary key is and how it is used in NocoDB.","permalink":"/fields/primary-key"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b22d161b.b9dc16ef.js b/packages/noco-docs/dist/assets/js/b22d161b.b9dc16ef.js new file mode 100644 index 0000000000..3f3be26d78 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b22d161b.b9dc16ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2773],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>h});var a=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function i(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?r(Object(o),!0).forEach((function(t){n(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function s(e,t){if(null==e)return{};var o,a,n=function(e,t){if(null==e)return{};var o,a,n={},r=Object.keys(e);for(a=0;a<r.length;a++)o=r[a],t.indexOf(o)>=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)o=r[a],t.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(o),m=n,h=d["".concat(l,".").concat(m)]||d[m]||p[m]||r;return o?a.createElement(h,i(i({ref:t},u),{},{components:o})):a.createElement(h,i({ref:t},u))}));function h(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:n,i[1]=s;for(var c=2;c<r;c++)i[c]=o[c];return a.createElement.apply(null,i)}return a.createElement.apply(null,o)}m.displayName="MDXCreateElement"},54954:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>c});var a=o(87462),n=(o(67294),o(3905));const r={title:"Welcome",description:"NocoDB Documentation",slug:"/"},i=void 0,s={unversionedId:"index",id:"index",title:"Welcome",description:"NocoDB Documentation",source:"@site/docs/010.index.md",sourceDirName:".",slug:"/",permalink:"/",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/010.index.md",tags:[],version:"current",sidebarPosition:10,frontMatter:{title:"Welcome",description:"NocoDB Documentation",slug:"/"},sidebar:"tutorialSidebar",next:{title:"Quick start",permalink:"/getting-started/quick-start"}},l={},c=[{value:"Features",id:"features",level:2},{value:"Rich Spreadsheet Interface",id:"rich-spreadsheet-interface",level:3},{value:"App Store for Workflow Automations",id:"app-store-for-workflow-automations",level:3},{value:"Programmatic Access",id:"programmatic-access",level:3},{value:"Sync Schema",id:"sync-schema",level:3},{value:"Audit",id:"audit",level:3},{value:"Why are we building this?",id:"why-are-we-building-this",level:2},{value:"Our Mission",id:"our-mission",level:2},{value:"How can I contribute to NocoDB's development ?",id:"how-can-i-contribute-to-nocodbs-development-",level:2},{value:"Where can I join the NocoDB community?",id:"where-can-i-join-the-nocodb-community",level:2}],u={toc:c},d="wrapper";function p(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:o(36562).Z,width:"1584",height:"396"})),(0,n.kt)("p",null,"NocoDB is a no-code database platform that allows teams to collaborate and build applications with ease of a familiar and intuitive spreadsheet interface. This allows even non-developers or business users to become software creators."),(0,n.kt)("p",null,"NocoDB works by connecting to any relational database and transforming them into a smart spreadsheet interface! This allows you to build no-code applications collaboratively with teams. NocoDB currently works with MySQL, PostgreSQL & SQLite (only in Open Source) databases. "),(0,n.kt)("p",null,"Also, NocoDB's app store allows you to build business workflows on views with combination of Slack, Microsoft Teams, Discord, Twilio, Whatsapp, Email & any 3rd party APIs too. Plus NocoDB provides programmatic access to APIs so that you can build integrations with Zapier / Integromat and custom applications too."),(0,n.kt)("h2",{id:"features"},"Features"),(0,n.kt)("h3",{id:"rich-spreadsheet-interface"},"Rich Spreadsheet Interface"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Basic Operations: Create, Read, Update and Delete on Tables, Fields, and Records"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Fields Operations: Sort, Filter, Hide / Un-hide Fields"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Multiple Views Types: Grid (By default), Gallery, Form View and Kanban View"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","View Permissions Types: Collaborative Views & Locked Views"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Share Bases / Views: either Public or Private (with Password Protected)"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Variant Cell Types: ID, Links, Lookup, Rollup, SingleLineText, Attachment, Currency, Formula and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Access Control with Roles : Fine-grained Access Control at different levels"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","and more ...")),(0,n.kt)("h3",{id:"app-store-for-workflow-automations"},"App Store for Workflow Automations"),(0,n.kt)("p",null,"We provide different integrations in three main categories. See ",(0,n.kt)("a",{href:"/account-settings/oss-specific-details#app-store",target:"_blank"},"App Store")," for details."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Chat : Slack, Discord, Mattermost, and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Email : AWS SES, SMTP, MailerSend, and etc"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","Storage : AWS S3, Google Cloud Storage, Minio, and etc")),(0,n.kt)("h3",{id:"programmatic-access"},"Programmatic Access"),(0,n.kt)("p",null,"We provide the following ways to let users invoke actions in a programmatic way. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","REST APIs"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","NocoDB SDK"),(0,n.kt)("li",{parentName:"ul"},"\u26a1 ","\xa0","SQL Access : Run SQL queries on your data source from NocoDB UI itself (Coming soon!)")),(0,n.kt)("h3",{id:"sync-schema"},"Sync Schema"),(0,n.kt)("p",null,"We allow you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from environment to others. See ",(0,n.kt)("a",{href:"/data-sources/sync-with-data-source",target:"_blank"},"Sync Schema")," for details."),(0,n.kt)("h3",{id:"audit"},"Audit"),(0,n.kt)("p",null,"We are keeping all the user operation logs under one place. See ",(0,n.kt)("a",{href:"/data-sources/actions-on-data-sources#audit-logs",target:"_blank"},"Audit")," for details."),(0,n.kt)("h2",{id:"why-are-we-building-this"},"Why are we building this?"),(0,n.kt)("p",null,"Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by a Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings has meant horrible access controls, vendor lockin, data lockin, abrupt price changes & most importantly a glass ceiling on what's possible in the future."),(0,n.kt)("h2",{id:"our-mission"},"Our Mission"),(0,n.kt)("p",null,"Our mission is to provide the most powerful no-code interface for databases which is Open Source to every single internet business in the world. This would not only democratise access to a powerful computing tool but also bring forth a billion+ people who will have radical tinkering-and-building abilities on internet."),(0,n.kt)("h2",{id:"how-can-i-contribute-to-nocodbs-development-"},"How can I contribute to NocoDB's development ?"),(0,n.kt)("p",null,"Please refer to ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/blob/develop/.github/CONTRIBUTING.md"},"here")," for the contribution guidelines."),(0,n.kt)("img",{src:"https://static.scarf.sh/a.png?x-pxid=c12a77cc-855e-4602-8a0f-614b2d0da56a",style:{margin:"0px"}}),(0,n.kt)("h2",{id:"where-can-i-join-the-nocodb-community"},"Where can I join the NocoDB community?"),(0,n.kt)("p",null,"Follow us for daily updates, content, and other activities with our community:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.youtube.com/@nocodb"},"Youtube")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://twitter.com/nocodb"},"Twitter")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"http://discord.nocodb.com/"},"Discord")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb"},"GitHub")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://community.nocodb.com/"},"Community Forums")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.linkedin.com/company/nocodb"},"LinkedIn")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/NocoDB/"},"Reddit"))))}p.isMDXComponent=!0},36562:(e,t,o)=>{o.d(t,{Z:()=>a});const a=o.p+"assets/images/banner-0a7a485798fc16881259280a1227725d.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b3347e58.cdcb3b32.js b/packages/noco-docs/dist/assets/js/b3347e58.cdcb3b32.js new file mode 100644 index 0000000000..49444dc24d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b3347e58.cdcb3b32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[345],{12068:e=>{e.exports=JSON.parse('{"label":"Specific DB type","permalink":"/tags/specific-db-type","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/custom-types/specific-db-type","title":"Specific DB type","description":"This article explains how to create & work with a Specific DB Type field.","permalink":"/fields/field-types/custom-types/specific-db-type"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b444d910.aba4d313.js b/packages/noco-docs/dist/assets/js/b444d910.aba4d313.js new file mode 100644 index 0000000000..6b3b8eea79 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b444d910.aba4d313.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8958],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),u=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=u(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=i,f=p["".concat(l,".").concat(m)]||p[m]||c[m]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:i,a[1]=s;for(var u=2;u<o;u++)a[u]=n[u];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},85507:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>u});var r=n(87462),i=(n(67294),n(3905));const o={title:"Column Operations",description:"Column Operations: Fields, Sort & Filter"},a=void 0,s={unversionedId:"setup-and-usages/column-operations",id:"version-0.109.7/setup-and-usages/column-operations",title:"Column Operations",description:"Column Operations: Fields, Sort & Filter",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/030.column-operations.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/column-operations",permalink:"/0.109.7/setup-and-usages/column-operations",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/030.column-operations.md",tags:[],version:"0.109.7",sidebarPosition:30,frontMatter:{title:"Column Operations",description:"Column Operations: Fields, Sort & Filter"},sidebar:"tutorialSidebar",previous:{title:"Table Operations",permalink:"/0.109.7/setup-and-usages/table-operations"},next:{title:"Column Types",permalink:"/0.109.7/setup-and-usages/column-types"}},l={},u=[{value:"Fields",id:"fields",level:2},{value:"Re-order Columns",id:"re-order-columns",level:3},{value:"Hide / Unhide Columns",id:"hide--unhide-columns",level:3},{value:"Sort",id:"sort",level:2},{value:"Filter",id:"filter",level:2},{value:"Enable NULL and EMPTY Filters",id:"enable-null-and-empty-filters",level:3},{value:"Supported Filters",id:"supported-filters",level:3}],d={toc:u},p="wrapper";function c(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"fields"},"Fields"),(0,i.kt)("p",null,"Click ",(0,i.kt)("inlineCode",{parentName:"p"},"Fields")," to control the visibility of a field."),(0,i.kt)("img",{width:"1262",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189098625-8b4930e7-9bb4-4e8f-aa44-d2a28a31abdb.png"}),(0,i.kt)("p",null,"By default, all system fields will be hid. However, you can tick ",(0,i.kt)("inlineCode",{parentName:"p"},"Show system fields")," to make them visible."),(0,i.kt)("img",{width:"1268",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189098684-4fe2ebfc-df00-40fc-8f3c-1d4d14a8fb23.png"}),(0,i.kt)("h3",{id:"re-order-columns"},"Re-order Columns"),(0,i.kt)("p",null,"Column positions can be re-ordered. Open ",(0,i.kt)("inlineCode",{parentName:"p"},"Fields")," menu, and re-order fields as needed by dragging and dropping the ",(0,i.kt)("inlineCode",{parentName:"p"},"drag icon"),"."),(0,i.kt)("img",{width:"358",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189100445-d1a3816e-ddc0-4830-ba0a-a7b65597d264.png"}),(0,i.kt)("h3",{id:"hide--unhide-columns"},"Hide / Unhide Columns"),(0,i.kt)("p",null,"To hide / unhide columns, open ",(0,i.kt)("inlineCode",{parentName:"p"},"Fields")," menu, tick checkbox to keep the column visible, untick checkbox to remove it from the view."),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("p",{parentName:"admonition"},"You can create different grid views with different fields shown in each view.")),(0,i.kt)("img",{width:"355",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189100701-125b529b-5578-43ad-a707-e8c1738e788c.png"}),(0,i.kt)("h2",{id:"sort"},"Sort"),(0,i.kt)("p",null,"Sorting allows you to order contents alphabetically (A \u2192 Z) / (Z \u2192 A) (OR) in ascending / descending order. NocoDB allows nested sorting. You can choose column fields & order in which to apply nested sorting. Lookup, Formula, Nested Data are also supported in Sorting."),(0,i.kt)("img",{width:"462",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189100830-29b164a2-dd63-41f9-987a-09de53e0a0ec.png"}),(0,i.kt)("img",{width:"473",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189100869-e458814c-ef9b-4d88-8d7c-4e7de0f3b416.png"}),(0,i.kt)("img",{width:"607",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189100945-f2575174-f0d2-48e5-8b89-2d14baa873e5.png"}),(0,i.kt)("h2",{id:"filter"},"Filter"),(0,i.kt)("p",null,"Filters allow you to restrict / organize your data on the view as per your needs. NocoDB allows nested filters. You can choose multiple columns and conditions to apply filter. Between filters, you can opt for either ",(0,i.kt)("inlineCode",{parentName:"p"},"and")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"or")," mode operation. Lookup, Formula, Nested Data are also supported in Filtering."),(0,i.kt)("img",{width:"1011",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189102268-706ba965-e332-4c93-b2d2-ea04f0fabf11.png"}),(0,i.kt)("img",{width:"1021",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189102641-bd4f64b1-21fc-42a0-bbe6-2a019e213eda.png"}),(0,i.kt)("p",null,"You can also group several filters together using Filter Group."),(0,i.kt)("img",{width:"1025",alt:"image",src:"https://user-images.githubusercontent.com/35857179/189102932-aa0e31ef-554f-4e8b-ae0e-2024b7f4d35b.png"}),(0,i.kt)("h3",{id:"enable-null-and-empty-filters"},"Enable NULL and EMPTY Filters"),(0,i.kt)("p",null,"NULL filters (",(0,i.kt)("inlineCode",{parentName:"p"},"is null")," & ",(0,i.kt)("inlineCode",{parentName:"p"},"is not null"),") and EMPTY filters (",(0,i.kt)("inlineCode",{parentName:"p"},"is empty")," & ",(0,i.kt)("inlineCode",{parentName:"p"},"is not empty"),") are hidden by default. If you wish to filter out either one only, you may enable ",(0,i.kt)("inlineCode",{parentName:"p"},"Show NULL and EMPTY Filter")," in Project Settings."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219009085-0308b2a9-10af-4afe-84b6-df52e42fb1a8.png",alt:"image"})),(0,i.kt)("p",null,"Otherwise, we can use Blank filters to filter out cells with NULL values and EMPTY values. "),(0,i.kt)("h3",{id:"supported-filters"},"Supported Filters"),(0,i.kt)("p",null,"Currently we support different types of filters for corresponding columns. Please refer the below matrix for details."),(0,i.kt)("iframe",{width:"100%",height:"700vh",src:"https://docs.google.com/spreadsheets/d/e/2PACX-1vTpCNKtA-szaXUKJEO5uuSIRnzUOK793MKnyBz9m2rQcwn7HqK19jPHeER-IIRWH9X56J78wfxXZuuv/pubhtml?gid=427284630&single=true&widget=true&headers=false"}))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b6006dd7.ba122014.js b/packages/noco-docs/dist/assets/js/b6006dd7.ba122014.js new file mode 100644 index 0000000000..0b36842c4e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b6006dd7.ba122014.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1676],{81921:i=>{i.exports=JSON.parse('{"label":"Multi-fields editor","permalink":"/tags/multi-fields-editor","allTagsPath":"/tags","count":1,"items":[{"id":"fields/multi-fields-editor","title":"Multi-field editor","description":"Understanding use of multi-field editor in NocoDB!","permalink":"/fields/multi-fields-editor"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b65801cb.33fd730a.js b/packages/noco-docs/dist/assets/js/b65801cb.33fd730a.js new file mode 100644 index 0000000000..80c89dfc28 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b65801cb.33fd730a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[274],{69609:e=>{e.exports=JSON.parse('{"label":"Decimal","permalink":"/tags/decimal","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/numerical/decimal","title":"Decimal","description":"This article explains how to create & work with a Decimal field.","permalink":"/fields/field-types/numerical/decimal"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/b7abf355.58febfd1.js b/packages/noco-docs/dist/assets/js/b7abf355.58febfd1.js new file mode 100644 index 0000000000..aa3b41ac11 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/b7abf355.58febfd1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3857],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>u});var a=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,o=function(e,t){if(null==e)return{};var r,a,o={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=a.createContext({}),l=function(e){var t=a.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return a.createElement(c.Provider,{value:t},e.children)},k="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,o=e.mdxType,n=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),k=l(r),d=o,u=k["".concat(c,".").concat(d)]||k[d]||m[d]||n;return r?a.createElement(u,s(s({ref:t},p),{},{components:r})):a.createElement(u,s({ref:t},p))}));function u(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var n=r.length,s=new Array(n);s[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[k]="string"==typeof e?e:o,s[1]=i;for(var l=2;l<n;l++)s[l]=r[l];return a.createElement.apply(null,s)}return a.createElement.apply(null,r)}d.displayName="MDXCreateElement"},17569:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>m,frontMatter:()=>n,metadata:()=>i,toc:()=>l});var a=r(87462),o=(r(67294),r(3905));const n={title:"Workspace overview",description:"This article briefs the concept of workspaces in NocoDB.",tags:["Workspaces","Overview"]},s=void 0,i={unversionedId:"workspaces/workspace-overview",id:"workspaces/workspace-overview",title:"Workspace overview",description:"This article briefs the concept of workspaces in NocoDB.",source:"@site/docs/030.workspaces/010.workspace-overview.md",sourceDirName:"030.workspaces",slug:"/workspaces/workspace-overview",permalink:"/workspaces/workspace-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/030.workspaces/010.workspace-overview.md",tags:[{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Workspace overview",description:"This article briefs the concept of workspaces in NocoDB.",tags:["Workspaces","Overview"]},sidebar:"tutorialSidebar",previous:{title:"Upgrading",permalink:"/getting-started/self-hosted/upgrading"},next:{title:"Create workspace",permalink:"/workspaces/create-workspace"}},c={},l=[{value:"Workspace context menu",id:"workspace-context-menu",level:3},{value:"Related articles",id:"related-articles",level:2}],p={toc:l},k="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(k,(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"In NocoDB, workspaces play a pivotal role in facilitating collaborative and organized data management. A workspace serves as a container for one or more bases, allowing users to bring together interconnected tables, views, and various elements into a unified and coherent entity. Each workspace can house multiple bases, enabling users to categorize and structure their data in a way that suits their specific needs. Whether you're tracking projects, managing databases, or organizing information, NocoDB's workspaces provide the flexibility and organization required to make data-driven decisions and foster collaboration within your team. Additionally, workspaces allow for the assignment of specific access permissions to workspace members, ensuring that data security and privacy are maintained while enabling effective teamwork."),(0,o.kt)("p",null,"Some key points to note about workspaces are:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Each workspace contains its own set of bases, keeping your data separate and well-organized."),(0,o.kt)("li",{parentName:"ol"},"Workspaces have their own set of members and permissions, allowing you to control who can access and modify data within each workspace."),(0,o.kt)("li",{parentName:"ol"},"Workspaces offer unique settings and billing options, letting you customize configurations to suit specific needs."),(0,o.kt)("li",{parentName:"ol"},"Bases are tied exclusively to one workspace and can't be moved between workspaces, ensuring data integrity."),(0,o.kt)("li",{parentName:"ol"},"Members can be part of multiple workspaces. You can also fine-tune their roles within each workspace.")),(0,o.kt)("p",null,"In summary, NocoDB workspaces streamline data management and member control, providing the flexibility and oversight necessary for various projects and teams."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"The Open Source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces.")),(0,o.kt)("h3",{id:"workspace-context-menu"},"Workspace context menu"),(0,o.kt)("p",null,"The workspace context menu, conveniently located in the left top of sidebar, provides a list of all the workspaces accessible to you.\nYou can easily switch between different workspaces by simply clicking on the respective workspace name within this menu."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:r(60538).Z,width:"2878",height:"1018"})),(0,o.kt)("h2",{id:"related-articles"},"Related articles"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/create-workspace"},"Create workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/workspace-collaboration"},"Invite team members to workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/workspace-collaboration#modifying-workspace-member-roles"},"Change team member role")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/workspace-collaboration#removing-workspace-members"},"Remove team member from workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#rename-workspace"},"Rename workspace")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#delete-workspace"},"Delete workspace"))))}m.isMDXComponent=!0},60538:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/workspace-context-menu-6c2b64ca701e4c01ed8706bde7426f2d.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ba1d2c5b.231d6b55.js b/packages/noco-docs/dist/assets/js/ba1d2c5b.231d6b55.js new file mode 100644 index 0000000000..4126c75030 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ba1d2c5b.231d6b55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6779],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var r=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function n(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){o(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,o=function(e,t){if(null==e)return{};var a,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):n(n({},t),e)),a},m=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},b=r.forwardRef((function(e,t){var a=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=p(a),b=o,k=c["".concat(s,".").concat(b)]||c[b]||d[b]||i;return a?r.createElement(k,n(n({ref:t},m),{},{components:a})):r.createElement(k,n({ref:t},m))}));function k(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=a.length,n=new Array(i);n[0]=b;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:o,n[1]=l;for(var p=2;p<i;p++)n[p]=a[p];return r.createElement.apply(null,n)}return r.createElement.apply(null,a)}b.displayName="MDXCreateElement"},80390:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(87462),o=(a(67294),a(3905));const i={title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL or Postgres databases within minutes",tags:["Bases","Import"],keywords:["NocoDB","Airtable","Import Airtable","Airtable to NocoDB","Airtable to MySQL","Airtable to Postgres"]},n=void 0,l={unversionedId:"bases/import-base-from-airtable",id:"bases/import-base-from-airtable",title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL or Postgres databases within minutes",source:"@site/docs/040.bases/040.import-base-from-airtable.md",sourceDirName:"040.bases",slug:"/bases/import-base-from-airtable",permalink:"/bases/import-base-from-airtable",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/040.import-base-from-airtable.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Import",permalink:"/tags/import"}],version:"current",sidebarPosition:40,frontMatter:{title:"Import Airtable to NocoDB",description:"A complete import of your Airtable to any MySQL or Postgres databases within minutes",tags:["Bases","Import"],keywords:["NocoDB","Airtable","Import Airtable","Airtable to NocoDB","Airtable to MySQL","Airtable to Postgres"]},sidebar:"tutorialSidebar",previous:{title:"Create base",permalink:"/bases/create-base"},next:{title:"Base collaboration",permalink:"/bases/base-collaboration"}},s={},p=[{value:"Configuration options",id:"configuration-options",level:3},{value:"Get Airtable Credentials",id:"get-airtable-credentials",level:2},{value:"Create Personal Access Token",id:"create-personal-access-token",level:3},{value:"Retrieve API Key",id:"retrieve-api-key",level:3},{value:"Retrieve Share Base ID / URL",id:"retrieve-share-base-id--url",level:3},{value:"Related articles",id:"related-articles",level:2}],m={toc:p},c="wrapper";function d(e){let{components:t,...i}=e;return(0,o.kt)(c,(0,r.Z)({},m,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"NocoDB offers a streamlined process for seamlessly transferring your Airtable database to various database management systems, including MySQL, Postgres and SQLite, in just a matter of minutes. This feature is particularly useful for users who wish to migrate their Airtable database to a more robust and scalable database management system."),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Import from Airtable is in beta version. See ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/nocodb/nocodb/discussions/2122"},"Importing Airtable To NocoDB")," for the migration notes.")),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"To proceed, you must have valid Airtable Credentials. Ensure you have access to the following information from your Airtable account:"),(0,o.kt)("ul",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#retrieve-api-key"},"API key")," or ",(0,o.kt)("a",{parentName:"li",href:"#create-personal-access-token"},"Personal Access Token")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#retrieve-share-base-id--url"},"Shared Base ID / URL")))),(0,o.kt)("p",null,"Open the ",(0,o.kt)("inlineCode",{parentName:"p"},"Quick Import- AIRTABLE")," modal begin the import process"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Hover over the base name in the left sidebar, click on the ",(0,o.kt)("inlineCode",{parentName:"li"},"...")," icon to open base context menu"),(0,o.kt)("li",{parentName:"ol"},"Select ",(0,o.kt)("inlineCode",{parentName:"li"},"Import Data")," from the base context menu"),(0,o.kt)("li",{parentName:"ol"},"Select ",(0,o.kt)("inlineCode",{parentName:"li"},"Airtable"))),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"import data",src:a(38761).Z,width:"2880",height:"1800"})),(0,o.kt)("p",null,"Alternatively, you can also open the ",(0,o.kt)("inlineCode",{parentName:"p"},"Quick Import- AIRTABLE")," modal from the ",(0,o.kt)("inlineCode",{parentName:"p"},"Base dashboard")),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Go to your Base dashboard, click on ",(0,o.kt)("inlineCode",{parentName:"p"},"Import Data")," ")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Select ",(0,o.kt)("inlineCode",{parentName:"p"},"Airtable")),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{alt:"import data",src:a(1999).Z,width:"2878",height:"1208"})),(0,o.kt)("p",{parentName:"li"},(0,o.kt)("img",{alt:"import data",src:a(14403).Z,width:"2878",height:"1800"})))),(0,o.kt)("p",null,"Continue with the following steps on ",(0,o.kt)("inlineCode",{parentName:"p"},"Quick Import- AIRTABLE")," modal to complete the import process:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Input ",(0,o.kt)("a",{parentName:"li",href:"#retrieve-api-key"},"API key")," / ",(0,o.kt)("a",{parentName:"li",href:"#create-personal-access-token"},"Personal Access Token")," "),(0,o.kt)("li",{parentName:"ol"},"Input ",(0,o.kt)("a",{parentName:"li",href:"#retrieve-share-base-id--url"},"shared Base ID / URL")," "),(0,o.kt)("li",{parentName:"ol"},"Configure ",(0,o.kt)("a",{parentName:"li",href:"#configuration-options"},"Airtable import options")," (Optional)"),(0,o.kt)("li",{parentName:"ol"},"Click ",(0,o.kt)("inlineCode",{parentName:"li"},"Import"))),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"import data",src:a(80308).Z,width:"2880",height:"1800"})),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Wait until ",(0,o.kt)("inlineCode",{parentName:"p"},"Go To Dashboard")," button is activated on the modal. Import details are captured in log window.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"import data",src:a(94358).Z,width:"2880",height:"1800"})),(0,o.kt)("h3",{id:"configuration-options"},"Configuration options"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Data"),": If you disable this option, only tables and views will be created (schema), excluding actual data records."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Secondary Views"),": If you disable this option, only the primary grid view for each table will be imported, omitting any secondary views."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Rollup Fields"),": If you disable this option, you can skip the import of Rollup fields. "),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Lookup Fields"),": If you disable this option, you can skip the import of Lookup fields. "),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Attachments Fields"),": If you disable this option, you can skip the import of Attachment fields, which typically store file attachments associated with records."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Import Formula Fields"),": Please be aware that import of formula fields from Airtable is currently not supported.")),(0,o.kt)("h2",{id:"get-airtable-credentials"},"Get Airtable Credentials"),(0,o.kt)("h3",{id:"create-personal-access-token"},"Create Personal Access Token"),(0,o.kt)("p",null,"Here are the steps to generate an Airtable Personal Access Token:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Visit the ",(0,o.kt)("a",{parentName:"li",href:"https://airtable.com/create/tokens"},"Airtable Create Tokens"),' page and click the "Create token" button.'),(0,o.kt)("li",{parentName:"ol"},"Provide a meaningful name for your token in the ",(0,o.kt)("inlineCode",{parentName:"li"},"Token name")," field."),(0,o.kt)("li",{parentName:"ol"},"Choose the necessary access scopes, with a minimum requirement of ",(0,o.kt)("inlineCode",{parentName:"li"},"data.records:read"),"."),(0,o.kt)("li",{parentName:"ol"},"Select the specific Base you wish to access with this token."),(0,o.kt)("li",{parentName:"ol"},"Confirm your choices by clicking the ",(0,o.kt)("inlineCode",{parentName:"li"},"Create token")," button."),(0,o.kt)("li",{parentName:"ol"},"Copy the newly generated ",(0,o.kt)("inlineCode",{parentName:"li"},"Personal Access Token")," for your use.")),(0,o.kt)("p",null,"For detailed information, you can refer to the ",(0,o.kt)("a",{parentName:"p",href:"https://airtable.com/developers/web/guides/personal-access-tokens"},"Airtable Personal Access Token guide"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:a(63397).Z,width:"2876",height:"1576"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:a(99130).Z,width:"2876",height:"1576"})),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:a(74529).Z,width:"2876",height:"1576"})),(0,o.kt)("h3",{id:"retrieve-api-key"},"Retrieve API Key"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Copy your Airtable API Key from ",(0,o.kt)("a",{parentName:"li",href:"https://airtable.com/create/apikey"},"Airtable create API key")," page\n",(0,o.kt)("img",{alt:"API Key",src:a(16294).Z,width:"2878",height:"996"}))),(0,o.kt)("h3",{id:"retrieve-share-base-id--url"},"Retrieve Share Base ID / URL"),(0,o.kt)("p",null,"See ",(0,o.kt)("a",{parentName:"p",href:"https://support.airtable.com/hc/en-us/articles/205752117-Creating-a-base-share-link-or-a-view-share-link#basesharelink"},"here")," for detailed procedures."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Open ",(0,o.kt)("inlineCode",{parentName:"li"},"Share")," menu in your Project / Base"),(0,o.kt)("li",{parentName:"ol"},"Open tab ",(0,o.kt)("inlineCode",{parentName:"li"},"Share Publicly")),(0,o.kt)("li",{parentName:"ol"},"Enable ",(0,o.kt)("inlineCode",{parentName:"li"},"Turn on full base access")),(0,o.kt)("li",{parentName:"ol"},"Copy generated shared base URL")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Shared base",src:a(58077).Z,width:"2876",height:"1422"})),(0,o.kt)("h2",{id:"related-articles"},"Related articles"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/create-base"},"Create an empty base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}d.isMDXComponent=!0},16294:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/airtable-api-key-877ce3d40ba4f18389ceede7c4fa50bb.png"},58077:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/airtable-share-base-c48341713680e60f512768432df19fec.png"},38761:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-import-airtable-1-3370c224db06eadddda7dd6224076af1.png"},80308:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-import-airtable-2-a758f2600b298ba29594cfb8da91e1a2.png"},94358:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-import-airtable-3-ff5f7ad98f229f0fcd630c0eea1432d6.png"},1999:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-import-from-dashboard-1-0ccc1e3e8508c11049dd45647d6c0f91.png"},14403:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/base-import-from-dashboard-2-d10a91e0ec28bbe4c620cdc5d4e871d6.png"},63397:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/pat-1-b1eb986ad72a1c426ccd1ad338b26ecc.png"},99130:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/pat-2-a3fcb811ed325a6d621f45e17e3aee2f.png"},74529:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/pat-3-fd78b26e00f9f01f395a073e54c465f6.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/bb516362.091774e0.js b/packages/noco-docs/dist/assets/js/bb516362.091774e0.js new file mode 100644 index 0000000000..ba36e38608 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/bb516362.091774e0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9721],{3905:(e,t,i)=>{i.d(t,{Zo:()=>d,kt:()=>u});var r=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function o(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function a(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?o(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):o(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function s(e,t){if(null==e)return{};var i,r,n=function(e,t){if(null==e)return{};var i,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)i=o[r],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)i=o[r],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var l=r.createContext({}),c=function(e){var t=r.useContext(l),i=t;return e&&(i="function"==typeof e?e(t):a(a({},t),e)),i},d=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",v={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},w=r.forwardRef((function(e,t){var i=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),p=c(i),w=n,u=p["".concat(l,".").concat(w)]||p[w]||v[w]||o;return i?r.createElement(u,a(a({ref:t},d),{},{components:i})):r.createElement(u,a({ref:t},d))}));function u(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=i.length,a=new Array(o);a[0]=w;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:n,a[1]=s;for(var c=2;c<o;c++)a[c]=i[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,i)}w.displayName="MDXCreateElement"},26238:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>v,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=i(87462),n=(i(67294),i(3905));const o={title:"View overview",description:"Understanding Views in NocoDB!",tags:["Views","Overview"],keywords:["NocoDB view","Overview"]},a=void 0,s={unversionedId:"views/views-overview",id:"views/views-overview",title:"View overview",description:"Understanding Views in NocoDB!",source:"@site/docs/090.views/010.views-overview.md",sourceDirName:"090.views",slug:"/views/views-overview",permalink:"/views/views-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/010.views-overview.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"View overview",description:"Understanding Views in NocoDB!",tags:["Views","Overview"],keywords:["NocoDB view","Overview"]},sidebar:"tutorialSidebar",previous:{title:"Actions on record",permalink:"/records/actions-on-record"},next:{title:"Create view",permalink:"/views/create-view"}},l={},c=[{value:"View Types Supported",id:"view-types-supported",level:2},{value:"View Permission Types",id:"view-permission-types",level:2},{value:"Collaborative Views (default)",id:"collaborative-views-default",level:3},{value:"Locked Views",id:"locked-views",level:3}],d={toc:c},p="wrapper";function v(e){let{components:t,...o}=e;return(0,n.kt)(p,(0,r.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Views within NocoDB not only allow you to tailor the visual presentation to your liking but also provide independent\ncontrol over sorting and filtering of records within each view. Each view maintains its unique configuration for\nfilters, data display, and enabled fields, ensuring that modifications of these configuration does not impact any other view.\nThis feature empowers users to efficiently personalize their data visualization while\nmaintaining the integrity of other views."),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"View represents data from a table. Any updates to records in a view will be reflected in all other views of the same table.")),(0,n.kt)("h2",{id:"view-types-supported"},"View Types Supported"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"view-types/grid"},"Grid View")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"view-types/form"},"Form View")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"view-types/gallery"},"Gallery View")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("a",{parentName:"li",href:"view-types/kanban"},"Kanban View"))),(0,n.kt)("h2",{id:"view-permission-types"},"View Permission Types"),(0,n.kt)("p",null,"We can apply permission to each View. By default, views are ",(0,n.kt)("inlineCode",{parentName:"p"},"Collaborative"),". To see or change the view type, expand ",(0,n.kt)("inlineCode",{parentName:"p"},"view-tool-bar-menu")," as shown below."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"locked view",src:i(47548).Z,width:"2320",height:"864"})),(0,n.kt)("h3",{id:"collaborative-views-default"},"Collaborative Views (default)"),(0,n.kt)("p",null,'By default, views are set to "Collaborative," allowing members with edit permissions or higher to modify view configurations. In this mode, all members can read and write data to the view. This is the default mode for all views.'),(0,n.kt)("h3",{id:"locked-views"},"Locked Views"),(0,n.kt)("p",null,'With "Locked Views," no one can edit the view configurations until they are unlocked. In this mode, all members are restricted to reading data from the view and are unable to make any changes to its settings or content. This mode is useful when you want to share a view with others but don\'t want them to make any changes to it.'))}v.isMDXComponent=!0},47548:(e,t,i)=>{i.d(t,{Z:()=>r});const r=i.p+"assets/images/locked-view-98e409b4c0859f73d2d59b6e418d338b.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/bb53f532.4d434c9f.js b/packages/noco-docs/dist/assets/js/bb53f532.4d434c9f.js new file mode 100644 index 0000000000..ed52977e3e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/bb53f532.4d434c9f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1641],{3905:(e,t,l)=>{l.d(t,{Zo:()=>p,kt:()=>m});var i=l(67294);function a(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function n(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,i)}return l}function r(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?n(Object(l),!0).forEach((function(t){a(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):n(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function o(e,t){if(null==e)return{};var l,i,a=function(e,t){if(null==e)return{};var l,i,a={},n=Object.keys(e);for(i=0;i<n.length;i++)l=n[i],t.indexOf(l)>=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(i=0;i<n.length;i++)l=n[i],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}var s=i.createContext({}),d=function(e){var t=i.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):r(r({},t),e)),l},p=function(e){var t=d(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var l=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=d(l),u=a,m=c["".concat(s,".").concat(u)]||c[u]||f[u]||n;return l?i.createElement(m,r(r({ref:t},p),{},{components:l})):i.createElement(m,r({ref:t},p))}));function m(e,t){var l=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=l.length,r=new Array(n);r[0]=u;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:a,r[1]=o;for(var d=2;d<n;d++)r[d]=l[d];return i.createElement.apply(null,r)}return i.createElement.apply(null,l)}u.displayName="MDXCreateElement"},69619:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>f,frontMatter:()=>n,metadata:()=>o,toc:()=>d});var i=l(87462),a=(l(67294),l(3905));const n={title:"URL",description:"This article explains how to create & work with an URL field.",tags:["Fields","Field types","Text based types","URL"],keywords:["Fields","Field types","Text based types","URL","Create URL field"]},r=void 0,o={unversionedId:"fields/field-types/text-based/url",id:"fields/field-types/text-based/url",title:"URL",description:"This article explains how to create & work with an URL field.",source:"@site/docs/070.fields/040.field-types/010.text-based/050.url.md",sourceDirName:"070.fields/040.field-types/010.text-based",slug:"/fields/field-types/text-based/url",permalink:"/fields/field-types/text-based/url",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/010.text-based/050.url.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Text based types",permalink:"/tags/text-based-types"},{label:"URL",permalink:"/tags/url"}],version:"current",sidebarPosition:50,frontMatter:{title:"URL",description:"This article explains how to create & work with an URL field.",tags:["Fields","Field types","Text based types","URL"],keywords:["Fields","Field types","Text based types","URL","Create URL field"]},sidebar:"tutorialSidebar",previous:{title:"Phone Number",permalink:"/fields/field-types/text-based/phonenumber"},next:{title:"Number",permalink:"/fields/field-types/numerical/number"}},s={},d=[{value:"Create an <code>URL</code> field",id:"create-an-url-field",level:2},{value:"Similar text based fields",id:"similar-text-based-fields",level:2}],p={toc:d},c="wrapper";function f(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,i.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"URL")," field is text based field custom-built for storing URLs. It is a special type of ",(0,a.kt)("inlineCode",{parentName:"p"},"Single line text")," field with"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Optional validation for URL "),(0,a.kt)("li",{parentName:"ul"},"Cell display as clickable link")),(0,a.kt)("h2",{id:"create-an-url-field"},"Create an ",(0,a.kt)("inlineCode",{parentName:"h2"},"URL")," field"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,a.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,a.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Select the field type as ",(0,a.kt)("inlineCode",{parentName:"li"},"URL")," from the dropdown."),(0,a.kt)("li",{parentName:"ol"},"Enable validation by toggling the ",(0,a.kt)("inlineCode",{parentName:"li"},"Validate URL")," checkbox (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:l(74599).Z,width:"2876",height:"1342"})),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("ul",{parentName:"admonition"},(0,a.kt)("li",{parentName:"ul"},"Specify default value without quotes."),(0,a.kt)("li",{parentName:"ul"},"Validation only ensures that the value entered is a valid URL. It does not check if the URL exists."))),(0,a.kt)("h2",{id:"similar-text-based-fields"},"Similar text based fields"),(0,a.kt)("p",null,"Following are the other text based fields available in NocoDB, custom-built for specific use cases."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/single-line-text"},"Single line text")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/long-text"},"Long text")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/email"},"Email")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/phonenumber"},"Phone"))))}f.isMDXComponent=!0},74599:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/url-e3c332b08bb350cbbe1eb247f2c1de1e.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/bd02e23f.e789a668.js b/packages/noco-docs/dist/assets/js/bd02e23f.e789a668.js new file mode 100644 index 0000000000..286589a941 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/bd02e23f.e789a668.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2606],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),d=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=d(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=d(n),m=i,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||l;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,a=new Array(l);a[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:i,a[1]=o;for(var d=2;d<l;d++)a[d]=n[d];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},33872:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>c,frontMatter:()=>l,metadata:()=>o,toc:()=>d});var r=n(87462),i=(n(67294),n(3905));const l={title:"Phone Number",description:"This article explains how to create & work with a Phone number field.",tags:["Fields","Field types","Text based types","Phone number"],keywords:["Fields","Field types","Text based types","Phone number","Create phone number field"]},a=void 0,o={unversionedId:"fields/field-types/text-based/phonenumber",id:"fields/field-types/text-based/phonenumber",title:"Phone Number",description:"This article explains how to create & work with a Phone number field.",source:"@site/docs/070.fields/040.field-types/010.text-based/040.phonenumber.md",sourceDirName:"070.fields/040.field-types/010.text-based",slug:"/fields/field-types/text-based/phonenumber",permalink:"/fields/field-types/text-based/phonenumber",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/010.text-based/040.phonenumber.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Text based types",permalink:"/tags/text-based-types"},{label:"Phone number",permalink:"/tags/phone-number"}],version:"current",sidebarPosition:40,frontMatter:{title:"Phone Number",description:"This article explains how to create & work with a Phone number field.",tags:["Fields","Field types","Text based types","Phone number"],keywords:["Fields","Field types","Text based types","Phone number","Create phone number field"]},sidebar:"tutorialSidebar",previous:{title:"Email",permalink:"/fields/field-types/text-based/email"},next:{title:"URL",permalink:"/fields/field-types/text-based/url"}},s={},d=[{value:"Create a <code>Phone number</code> field",id:"create-a-phone-number-field",level:2},{value:"Similar text based fields",id:"similar-text-based-fields",level:2}],p={toc:d},u="wrapper";function c(e){let{components:t,...l}=e;return(0,i.kt)(u,(0,r.Z)({},p,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Phone number")," field is text based field that allows you to store phone numbers. It also allows you to validate the phone number."),(0,i.kt)("h2",{id:"create-a-phone-number-field"},"Create a ",(0,i.kt)("inlineCode",{parentName:"h2"},"Phone number")," field"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,i.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,i.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Select the field type as ",(0,i.kt)("inlineCode",{parentName:"li"},"Phonenumber")," from the dropdown."),(0,i.kt)("li",{parentName:"ol"},"Enable validation by toggling the ",(0,i.kt)("inlineCode",{parentName:"li"},"Validate Phonenumber")," checkbox (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:n(30199).Z,width:"2876",height:"1230"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"Specify default value without quotes."),(0,i.kt)("li",{parentName:"ul"},"Validation only ensures that the value entered is a valid phone number. It does not check if the phone number exists."))),(0,i.kt)("h2",{id:"similar-text-based-fields"},"Similar text based fields"),(0,i.kt)("p",null,"Following are the other text based fields available in NocoDB, custom-built for specific use cases."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/single-line-text"},"Single line text")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/long-text"},"Long text")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/url"},"URL")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/email"},"Email"))))}c.isMDXComponent=!0},30199:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/phonenumber-1913eec12ec23e7b62e8c83ca69c7627.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c1501dcb.9f4cc897.js b/packages/noco-docs/dist/assets/js/c1501dcb.9f4cc897.js new file mode 100644 index 0000000000..1ad9d9ab37 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c1501dcb.9f4cc897.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7096],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},c=Object.keys(e);for(a=0;a<c.length;a++)n=c[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(a=0;a<c.length;a++)n=c[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,c=e.originalType,s=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),u=l(n),p=o,h=u["".concat(s,".").concat(p)]||u[p]||m[p]||c;return n?a.createElement(h,r(r({ref:t},d),{},{components:n})):a.createElement(h,r({ref:t},d))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var c=n.length,r=new Array(c);r[0]=p;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i[u]="string"==typeof e?e:o,r[1]=i;for(var l=2;l<c;l++)r[l]=n[l];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},36802:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>m,frontMatter:()=>c,metadata:()=>i,toc:()=>l});var a=n(87462),o=(n(67294),n(3905));const c={title:"Sync Schema",description:"Schema changes made to database from outside NocoDB GUI can be synced"},r=void 0,i={unversionedId:"setup-and-usages/sync-schema",id:"version-0.109.7/setup-and-usages/sync-schema",title:"Sync Schema",description:"Schema changes made to database from outside NocoDB GUI can be synced",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/120.sync-schema.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/sync-schema",permalink:"/0.109.7/setup-and-usages/sync-schema",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/120.sync-schema.md",tags:[],version:"0.109.7",sidebarPosition:120,frontMatter:{title:"Sync Schema",description:"Schema changes made to database from outside NocoDB GUI can be synced"},sidebar:"tutorialSidebar",previous:{title:"Display Value",permalink:"/0.109.7/setup-and-usages/display-value"},next:{title:"Share Base",permalink:"/0.109.7/setup-and-usages/share-base"}},s={},l=[{value:"How to sync schema changes to NocoDB",id:"how-to-sync-schema-changes-to-nocodb",level:2},{value:"1. From the <code>Project menu</code>, click <code>Team & Settings</code>",id:"1-from-the-project-menu-click-team--settings",level:3},{value:"2. Click <code>Data Source</code> under SETTINGS, click <code>Sync Metadata</code> on the target base",id:"2-click-data-source-under-settings-click-sync-metadata-on-the-target-base",level:3},{value:"3. Changes carried outside GUI, identified by NocoDB are listed under <code>Sync state</code>",id:"3-changes-carried-outside-gui-identified-by-nocodb-are-listed-under-sync-state",level:3},{value:"4. Click <code>Sync Now</code> to complete Schema sync procedure",id:"4-click-sync-now-to-complete-schema-sync-procedure",level:3},{value:"Notes",id:"notes",level:4}],d={toc:l},u="wrapper";function m(e){let{components:t,...n}=e;return(0,o.kt)(u,(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"how-to-sync-schema-changes-to-nocodb"},"How to sync schema changes to NocoDB"),(0,o.kt)("p",null,"NocoDB allows you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from one environment to other."),(0,o.kt)("p",null,"Below are the steps to sync schema changes."),(0,o.kt)("h3",{id:"1-from-the-project-menu-click-team--settings"},"1. From the ",(0,o.kt)("inlineCode",{parentName:"h3"},"Project menu"),", click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Team & Settings")),(0,o.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,o.kt)("h3",{id:"2-click-data-source-under-settings-click-sync-metadata-on-the-target-base"},"2. Click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Data Source")," under SETTINGS, click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Sync Metadata")," on the target base"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219831352-e6692ba5-5c94-4331-94ce-5796e57f87a1.png",alt:"image"})),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219831634-bbb6f256-45fb-4224-9f82-bc1bed6082db.png",alt:"image"})),(0,o.kt)("h3",{id:"3-changes-carried-outside-gui-identified-by-nocodb-are-listed-under-sync-state"},"3. Changes carried outside GUI, identified by NocoDB are listed under ",(0,o.kt)("inlineCode",{parentName:"h3"},"Sync state")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"If changes made to the database are not visible, click ",(0,o.kt)("inlineCode",{parentName:"li"},"Reload")),(0,o.kt)("li",{parentName:"ul"},"Identified schema changes are identified for each table in ",(0,o.kt)("inlineCode",{parentName:"li"},"red")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sync now")," button gets activated, if Schema changes are identified by NocoDB")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219831855-bcac229c-41b6-4689-b7e1-c3cdfe23a0a1.png",alt:"image"})),(0,o.kt)("h3",{id:"4-click-sync-now-to-complete-schema-sync-procedure"},"4. Click ",(0,o.kt)("inlineCode",{parentName:"h3"},"Sync Now")," to complete Schema sync procedure"),(0,o.kt)("h4",{id:"notes"},"Notes"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Column rename operation will be treated like ",(0,o.kt)("inlineCode",{parentName:"li"},"column delete")," & ",(0,o.kt)("inlineCode",{parentName:"li"},"column create")," operation."),(0,o.kt)("li",{parentName:"ol"},"Only table schema changes identified will be listed under ",(0,o.kt)("inlineCode",{parentName:"li"},"Sync state"),". Any changes to records are automatically synchronized.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c1a34d6e.647b81cf.js b/packages/noco-docs/dist/assets/js/c1a34d6e.647b81cf.js new file mode 100644 index 0000000000..01a77955fa --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c1a34d6e.647b81cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[636],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function a(e,t){if(null==e)return{};var r,o,n=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=o.createContext({}),p=function(e){var t=o.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},y=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=p(r),y=n,f=d["".concat(s,".").concat(y)]||d[y]||m[y]||i;return r?o.createElement(f,l(l({ref:t},c),{},{components:r})):o.createElement(f,l({ref:t},c))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=y;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:n,l[1]=a;for(var p=2;p<i;p++)l[p]=r[p];return o.createElement.apply(null,l)}return o.createElement.apply(null,r)}y.displayName="MDXCreateElement"},55619:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>a,toc:()=>p});var o=r(87462),n=(r(67294),r(3905));const i={title:"Geometry",description:"This article explains how to create & work with a Geometry field.",tags:["Fields","Field types","Custom types","Geometry"],keywords:["Fields","Field types","Custom types","Geometry","Create geometry field"]},l=void 0,a={unversionedId:"fields/field-types/custom-types/geometry",id:"fields/field-types/custom-types/geometry",title:"Geometry",description:"This article explains how to create & work with a Geometry field.",source:"@site/docs/070.fields/040.field-types/050.custom-types/060.geometry.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/geometry",permalink:"/fields/field-types/custom-types/geometry",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/060.geometry.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Geometry",permalink:"/tags/geometry"}],version:"current",sidebarPosition:60,frontMatter:{title:"Geometry",description:"This article explains how to create & work with a Geometry field.",tags:["Fields","Field types","Custom types","Geometry"],keywords:["Fields","Field types","Custom types","Geometry","Create geometry field"]},sidebar:"tutorialSidebar",previous:{title:"Barcode",permalink:"/fields/field-types/custom-types/barcode"},next:{title:"Specific DB type",permalink:"/fields/field-types/custom-types/specific-db-type"}},s={},p=[{value:"Create a geometry field",id:"create-a-geometry-field",level:2}],c={toc:p},d="wrapper";function m(e){let{components:t,...i}=e;return(0,n.kt)(d,(0,o.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"create-a-geometry-field"},"Create a geometry field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)"),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Geometry")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:r(63837).Z,width:"2874",height:"1274"})))}m.isMDXComponent=!0},63837:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/geometry-e43058dba3ccb3be62b68fb61ca7e67d.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c1dfffdd.09a49a06.js b/packages/noco-docs/dist/assets/js/c1dfffdd.09a49a06.js new file mode 100644 index 0000000000..fa2b6d0d0d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c1dfffdd.09a49a06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4166],{3905:(e,t,l)=>{l.d(t,{Zo:()=>p,kt:()=>u});var i=l(67294);function n(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function a(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,i)}return l}function r(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?a(Object(l),!0).forEach((function(t){n(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):a(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function o(e,t){if(null==e)return{};var l,i,n=function(e,t){if(null==e)return{};var l,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)l=a[i],t.indexOf(l)>=0||(n[l]=e[l]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)l=a[i],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(n[l]=e[l])}return n}var s=i.createContext({}),d=function(e){var t=i.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):r(r({},t),e)),l},p=function(e){var t=d(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var l=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=d(l),m=n,u=c["".concat(s,".").concat(m)]||c[m]||f[m]||a;return l?i.createElement(u,r(r({ref:t},p),{},{components:l})):i.createElement(u,r({ref:t},p))}));function u(e,t){var l=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=l.length,r=new Array(a);r[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,r[1]=o;for(var d=2;d<a;d++)r[d]=l[d];return i.createElement.apply(null,r)}return i.createElement.apply(null,l)}m.displayName="MDXCreateElement"},9933:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>f,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var i=l(87462),n=(l(67294),l(3905));const a={title:"Long text",description:"This article explains how to create & work with a Long text field.",tags:["Fields","Field types","Text based types","Long text"],keywords:["Fields","Field types","Text based types","Long text","Create long text field"]},r=void 0,o={unversionedId:"fields/field-types/text-based/long-text",id:"fields/field-types/text-based/long-text",title:"Long text",description:"This article explains how to create & work with a Long text field.",source:"@site/docs/070.fields/040.field-types/010.text-based/020.long-text.md",sourceDirName:"070.fields/040.field-types/010.text-based",slug:"/fields/field-types/text-based/long-text",permalink:"/fields/field-types/text-based/long-text",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/010.text-based/020.long-text.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Text based types",permalink:"/tags/text-based-types"},{label:"Long text",permalink:"/tags/long-text"}],version:"current",sidebarPosition:20,frontMatter:{title:"Long text",description:"This article explains how to create & work with a Long text field.",tags:["Fields","Field types","Text based types","Long text"],keywords:["Fields","Field types","Text based types","Long text","Create long text field"]},sidebar:"tutorialSidebar",previous:{title:"Single line text",permalink:"/fields/field-types/text-based/single-line-text"},next:{title:"Email",permalink:"/fields/field-types/text-based/email"}},s={},d=[{value:"Create a <code>Long Text</code> field",id:"create-a-long-text-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Similar text based fields",id:"similar-text-based-fields",level:2}],p={toc:d},c="wrapper";function f(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Long Text")," field is text based field that allows text in multiple lines. It is useful for storing lengthy text like description, notes, etc."),(0,n.kt)("h2",{id:"create-a-long-text-field"},"Create a ",(0,n.kt)("inlineCode",{parentName:"h2"},"Long Text")," field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Long text")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:l(23984).Z,width:"2878",height:"1262"})),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"Specify default value without quotes."),(0,n.kt)("li",{parentName:"ul"},"Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Enter")," key to add new line."))),(0,n.kt)("h3",{id:"cell-display"},"Cell display"),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Long Text")," field is displayed as a single line text field in the table view. Click on the expand icon in the cell to view the full text."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:l(13676).Z,width:"1390",height:"515"}),"\n",(0,n.kt)("img",{alt:"image",src:l(50419).Z,width:"885",height:"760"})),(0,n.kt)("h2",{id:"similar-text-based-fields"},"Similar text based fields"),(0,n.kt)("p",null,"Following are the other text based fields available in NocoDB, custom-built for specific use cases."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/single-line-text"},"Single line text")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/url"},"URL")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/email"},"Email")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/text-based/phonenumber"},"Phone"))))}f.isMDXComponent=!0},50419:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/long-text-expand-2-09cce09ec85355082b79054a189abb37.png"},13676:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/long-text-expand-d15b69ace110a10185959d52b19bce63.png"},23984:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/longtext-6970b99c2c42d656b549a5b2a0f75123.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c2accac3.f65740b4.js b/packages/noco-docs/dist/assets/js/c2accac3.f65740b4.js new file mode 100644 index 0000000000..ed0c5edb55 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c2accac3.f65740b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2874],{78942:e=>{e.exports=JSON.parse('{"label":"Percent","permalink":"/tags/percent","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/numerical/percent","title":"Percent","description":"This article explains how to create & work with a Percent field.","permalink":"/fields/field-types/numerical/percent"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c42aaec2.c3eaeb58.js b/packages/noco-docs/dist/assets/js/c42aaec2.c3eaeb58.js new file mode 100644 index 0000000000..d01f0221fd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c42aaec2.c3eaeb58.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[92],{30780:e=>{e.exports=JSON.parse('{"label":"Permissions","permalink":"/tags/permissions","allTagsPath":"/tags","count":3,"items":[{"id":"bases/base-collaboration","title":"Base collaboration","description":"Invite team members to work on a base","permalink":"/bases/base-collaboration"},{"id":"roles-and-permissions/roles-permissions-overview","title":"Roles & permissions overview","description":"Learn about roles and permissions in NocoDB.","permalink":"/roles-and-permissions/roles-permissions-overview"},{"id":"workspaces/workspace-collaboration","title":"Workspace collaboration","description":"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.","permalink":"/workspaces/workspace-collaboration"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c76e097b.cb2c6722.js b/packages/noco-docs/dist/assets/js/c76e097b.cb2c6722.js new file mode 100644 index 0000000000..69e284e8b8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c76e097b.cb2c6722.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1461],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},m=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},k=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),c=p(r),k=n,g=c["".concat(s,".").concat(k)]||c[k]||d[k]||i;return r?a.createElement(g,l(l({ref:t},m),{},{components:r})):a.createElement(g,l({ref:t},m))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,l=new Array(i);l[0]=k;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,l[1]=o;for(var p=2;p<i;p++)l[p]=r[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}k.displayName="MDXCreateElement"},48496:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>p});var a=r(87462),n=(r(67294),r(3905));const i={title:"Roles & permissions overview",description:"Learn about roles and permissions in NocoDB.",tags:["Roles","Permissions","Overview"],keywords:["Roles overview","Permissions overview","NocoDB roles","NocoDB permissions","NocoDB roles overview","NocoDB permissions overview"]},l=void 0,o={unversionedId:"roles-and-permissions/roles-permissions-overview",id:"roles-and-permissions/roles-permissions-overview",title:"Roles & permissions overview",description:"Learn about roles and permissions in NocoDB.",source:"@site/docs/110.roles-and-permissions/010.roles-permissions-overview.md",sourceDirName:"110.roles-and-permissions",slug:"/roles-and-permissions/roles-permissions-overview",permalink:"/roles-and-permissions/roles-permissions-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/110.roles-and-permissions/010.roles-permissions-overview.md",tags:[{label:"Roles",permalink:"/tags/roles"},{label:"Permissions",permalink:"/tags/permissions"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Roles & permissions overview",description:"Learn about roles and permissions in NocoDB.",tags:["Roles","Permissions","Overview"],keywords:["Roles overview","Permissions overview","NocoDB roles","NocoDB permissions","NocoDB roles overview","NocoDB permissions overview"]},sidebar:"tutorialSidebar",previous:{title:"Actions on Data sources",permalink:"/data-sources/actions-on-data-sources"},next:{title:"Collaboration overview",permalink:"/collaboration/collaboration-overview"}},s={},p=[{value:"Roles",id:"roles",level:2},{value:"Workspace level permissions",id:"workspace-level-permissions",level:3},{value:"Base level permissions",id:"base-level-permissions",level:3},{value:"Collaboration",id:"collaboration",level:4},{value:"Table & view operations",id:"table--view-operations",level:4},{value:"Record operations",id:"record-operations",level:4},{value:"Automations & advanced",id:"automations--advanced",level:4}],m={toc:p},c="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(c,(0,a.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"In NocoDB, we have roles that determine what people can do in a Workspace or Base. "),(0,n.kt)("p",null,"You can give a member one of these roles: "),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Creator "),(0,n.kt)("li",{parentName:"ul"},"Editor"),(0,n.kt)("li",{parentName:"ul"},"Commenter "),(0,n.kt)("li",{parentName:"ul"},"Viewer ")),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("p",{parentName:"admonition"},"Role for a member, if assigned at base level carry precedence over workspace level role.")),(0,n.kt)("p",null,"When inviting a user, their role designation is initially assigned but can be modified later. Our role system\noperates incrementally, with higher-level roles encompassing all privileges of lower-level roles.\nThis hierarchy offers flexibility in permissions and fosters a transparent organizational structure\nin workspace or base management."),(0,n.kt)("h2",{id:"roles"},"Roles"),(0,n.kt)("p",null,'Roles serve as the basis for user privileges in NocoDB. They are associated with members at two levels:\nWorkspace and Base. When a member is invited to a Workspace with a specific role, like an "Editor," they\nautomatically have that role in all Bases within that Workspace. However, project owners or creators can customize\npermissions at the project level to align with specific needs. This dual-level role assignment system\nensures adaptable user permissions and access management in NocoDB.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Owner"),': When a member creates a new Workspace or Base, they automatically become the Workspace or Base "Owner."\n\\This role grants exclusive privileges, including the authority to delete the Workspace or Base.\nThe "Owner" role\'s privileges are non-transferable, ensuring ownership and control integrity.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Creator"),': The "Creator" role shares all privileges with an "Owner," except for deleting the workspace or base.\n"Creators" have full administrative rights, except for deletion authority, which remains exclusive to the "Owner."\nThis ensures balanced workspace or base management.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Editor"),': An "Editor" can create and edit records but cannot modify the project schema,\nlike adding tables or fields. They strike a balance between data input and schema management.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Commenter"),': The "Commenter" role cannot add or edit records but can provide comments on existing records\n, facilitating communication and feedback.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Viewer"),': "Viewers" can only access records and associated comments, without the ability to contribute\nor make changes, ensuring controlled access for informational purposes.'),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"No Access"),": This role, applied exclusively at the base level, revokes project access for the designated user,\nensuring robust security and access management."),(0,n.kt)("h3",{id:"workspace-level-permissions"},"Workspace level permissions"),(0,n.kt)("p",null,"The individual who creates the workspace is automatically designated as a Workspace owner.\nA workspace can have only one Owner. Access to bases within that workspace is granted to members based on their roles\nwithin the parent workspace. When a member becomes part of a workspace, the role at the workspace level is\nautomatically applied to them for all bases in that workspace, unless a specific exception is configured\nto override at base level."),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Task"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Owner"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Creator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Editor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Viewer"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Invite member to workspace"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Manage member access to workspace"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Remove member access from workspace"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"View members in workspace"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Delete Workspace"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Billing & upgrade options"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Create a new base"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Access existing bases at assigned roles"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))),(0,n.kt)("h3",{id:"base-level-permissions"},"Base level permissions"),(0,n.kt)("h4",{id:"collaboration"},"Collaboration"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Task"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Owner"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Creator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Editor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Viewer"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Invite members to base at or below your role"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Manage members access to base"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Remove member access from a base"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"View members in a base"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Share base"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Share view"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})))),(0,n.kt)("h4",{id:"table--view-operations"},"Table & view operations"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Task"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Owner"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Creator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Editor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Viewer"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete table"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete fields"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete views"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Hide / un-hide / reorder fields"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete sort"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete filters"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete group-by"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))),(0,n.kt)("h4",{id:"record-operations"},"Record operations"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Task"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Owner"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Creator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Editor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Viewer"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete record"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"View & add comment on a record"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"View record"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))),(0,n.kt)("h4",{id:"automations--advanced"},"Automations & advanced"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Task"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Owner"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Creator"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Editor"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,n.kt)("th",{parentName:"tr",align:"center"},"Viewer"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Add / modify / delete Webhook"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"}),(0,n.kt)("td",{parentName:"tr",align:"center"})),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"ERD (Project & Table relations)"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"API Snippet"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"API Token"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f"),(0,n.kt)("td",{parentName:"tr",align:"center"},"\u2714\ufe0f")))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c7dc53b4.b2f49337.js b/packages/noco-docs/dist/assets/js/c7dc53b4.b2f49337.js new file mode 100644 index 0000000000..bc2027e32f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c7dc53b4.b2f49337.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4513],{54830:e=>{e.exports=JSON.parse('{"label":"Single select","permalink":"/tags/single-select","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/select-based/single-select","title":"Single Select","description":"This article explains how to create & work with a Single select field.","permalink":"/fields/field-types/select-based/single-select"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/c93390fb.fed1f975.js b/packages/noco-docs/dist/assets/js/c93390fb.fed1f975.js new file mode 100644 index 0000000000..225824e0c7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/c93390fb.fed1f975.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4660],{83256:e=>{e.exports=JSON.parse('{"label":"Links based types","permalink":"/tags/links-based-types","allTagsPath":"/tags","count":3,"items":[{"id":"fields/field-types/links-based/links","title":"Links","description":"This article explains how to create & work with a Links field.","permalink":"/fields/field-types/links-based/links"},{"id":"fields/field-types/links-based/lookup","title":"Lookup","description":"This article explains how to create & work with a Lookup field.","permalink":"/fields/field-types/links-based/lookup"},{"id":"fields/field-types/links-based/rollup","title":"Rollup","description":"This article explains how to create & work with a Rollup field.","permalink":"/fields/field-types/links-based/rollup"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cb2030df.3cfcfbf0.js b/packages/noco-docs/dist/assets/js/cb2030df.3cfcfbf0.js new file mode 100644 index 0000000000..52d856e335 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cb2030df.3cfcfbf0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5334],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var l=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function r(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?a(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):a(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e,t){if(null==e)return{};var i,l,n=function(e,t){if(null==e)return{};var i,l,n={},a=Object.keys(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var s=l.createContext({}),d=function(e){var t=l.useContext(s),i=t;return e&&(i="function"==typeof e?e(t):r(r({},t),e)),i},p=function(e){var t=d(e.components);return l.createElement(s.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),c=d(i),u=n,m=c["".concat(s,".").concat(u)]||c[u]||f[u]||a;return i?l.createElement(m,r(r({ref:t},p),{},{components:i})):l.createElement(m,r({ref:t},p))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,r=new Array(a);r[0]=u;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,r[1]=o;for(var d=2;d<a;d++)r[d]=i[d];return l.createElement.apply(null,r)}return l.createElement.apply(null,i)}u.displayName="MDXCreateElement"},20563:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>f,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var l=i(87462),n=(i(67294),i(3905));const a={title:"Rating",description:"This article explains how to create & work with a Rating field.",tags:["Fields","Field types","Custom types","Rating"],keywords:["Fields","Field types","Custom types","Rating","Create rating field"]},r=void 0,o={unversionedId:"fields/field-types/select-based/rating",id:"fields/field-types/select-based/rating",title:"Rating",description:"This article explains how to create & work with a Rating field.",source:"@site/docs/070.fields/040.field-types/030.select-based/030.rating.md",sourceDirName:"070.fields/040.field-types/030.select-based",slug:"/fields/field-types/select-based/rating",permalink:"/fields/field-types/select-based/rating",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/030.select-based/030.rating.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Rating",permalink:"/tags/rating"}],version:"current",sidebarPosition:30,frontMatter:{title:"Rating",description:"This article explains how to create & work with a Rating field.",tags:["Fields","Field types","Custom types","Rating"],keywords:["Fields","Field types","Custom types","Rating","Create rating field"]},sidebar:"tutorialSidebar",previous:{title:"Multi Select",permalink:"/fields/field-types/select-based/multi-select"},next:{title:"Links",permalink:"/fields/field-types/links-based/links"}},s={},d=[{value:"Create a checkbox field",id:"create-a-checkbox-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Setting value for the field",id:"setting-value-for-the-field",level:3},{value:"Unsetting value for the field",id:"unsetting-value-for-the-field",level:3},{value:"Supported icons",id:"supported-icons",level:3},{value:"Related fields",id:"related-fields",level:2}],p={toc:d},c="wrapper";function f(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The "),(0,n.kt)("h2",{id:"create-a-checkbox-field"},"Create a checkbox field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Rating")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Select icon for the field; defaults to ",(0,n.kt)("inlineCode",{parentName:"li"},"star")," icon (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Configure max count for the field; defaults to ",(0,n.kt)("inlineCode",{parentName:"li"},"5")," (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select color for the field; defaults to ",(0,n.kt)("inlineCode",{parentName:"li"},"grey")," (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:i(19442).Z,width:"2874",height:"1416"})),(0,n.kt)("h3",{id:"cell-display"},"Cell display"),(0,n.kt)("p",null,"Cell displays the ratings in the color & icon selected for the field.",(0,n.kt)("br",{parentName:"p"}),"\n",(0,n.kt)("img",{alt:"image",src:i(34466).Z,width:"1264",height:"593"})),(0,n.kt)("h3",{id:"setting-value-for-the-field"},"Setting value for the field"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"nth")," rating icon to set the rating value for the field as ",(0,n.kt)("inlineCode",{parentName:"li"},"n"),"."),(0,n.kt)("li",{parentName:"ul"},"Key in the rating value in the cell to set the rating value for the field."),(0,n.kt)("li",{parentName:"ul"},"Paste the rating value in the cell to set the rating value for the field.")),(0,n.kt)("h3",{id:"unsetting-value-for-the-field"},"Unsetting value for the field"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Click on the ",(0,n.kt)("inlineCode",{parentName:"li"},"nth")," rating icon again to set the rating value for the field as ",(0,n.kt)("inlineCode",{parentName:"li"},"0"),"."),(0,n.kt)("li",{parentName:"ul"},"Key in ",(0,n.kt)("inlineCode",{parentName:"li"},"0")," in the cell to set the rating value for the field as ",(0,n.kt)("inlineCode",{parentName:"li"},"0"),"."),(0,n.kt)("li",{parentName:"ul"},"Key in ",(0,n.kt)("inlineCode",{parentName:"li"},"Delete")," to set the rating value for the field as ",(0,n.kt)("inlineCode",{parentName:"li"},"0"),".")),(0,n.kt)("h3",{id:"supported-icons"},"Supported icons"),(0,n.kt)("p",null,"NocoDB supports the following icons for the rating field type.",(0,n.kt)("br",{parentName:"p"}),"\n",(0,n.kt)("img",{alt:"image",src:i(30639).Z,width:"400",height:"445"})),(0,n.kt)("h2",{id:"related-fields"},"Related fields"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/select-based/checkbox"},"Checkbox"))))}f.isMDXComponent=!0},34466:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/rating-cell-ab9000c7aa5624758b22f06f59b5495e.png"},30639:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/rating-icon-06378f121f8364a58ce1b0da016f6b12.png"},19442:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/rating-7dcce304ae8fbf78908c340a87e90da4.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cc44517e.04005ed9.js b/packages/noco-docs/dist/assets/js/cc44517e.04005ed9.js new file mode 100644 index 0000000000..7c8f9f9e9a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cc44517e.04005ed9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1949],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),c=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=r,g=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return n?a.createElement(g,o(o({ref:t},u),{},{components:n})):a.createElement(g,o({ref:t},u))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var c=2;c<i;c++)o[c]=n[c];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},93124:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var a=n(87462),r=(n(67294),n(3905));const i={title:"i18n translation",description:"Contribute to NocoDB's i18n translation"},o=void 0,l={unversionedId:"engineering/translation",id:"version-0.109.7/engineering/translation",title:"i18n translation",description:"Contribute to NocoDB's i18n translation",source:"@site/versioned_docs/version-0.109.7/050.engineering/070.translation.md",sourceDirName:"050.engineering",slug:"/engineering/translation",permalink:"/0.109.7/engineering/translation",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/070.translation.md",tags:[],version:"0.109.7",sidebarPosition:70,frontMatter:{title:"i18n translation",description:"Contribute to NocoDB's i18n translation"},sidebar:"tutorialSidebar",previous:{title:"Releases & Builds",permalink:"/0.109.7/engineering/builds-and-releases"},next:{title:"FAQs",permalink:"/0.109.7/FAQs"}},s={},c=[{value:"How to add / edit translations ?",id:"how-to-add--edit-translations-",level:2},{value:"Using Github",id:"using-github",level:3},{value:"Using Crowdin",id:"using-crowdin",level:3},{value:"Reference",id:"reference",level:4},{value:"How to add a new language ?",id:"how-to-add-a-new-language-",level:2},{value:"GitHub changes",id:"github-changes",level:4},{value:"Crowdin changes admin only",id:"crowdin-changes-admin-only",level:4},{value:"String Categories",id:"string-categories",level:2}],u={toc:c},p="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"NocoDB supports 30+ foreign languages & community contributions are now simplified via ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com/"},"Crowdin"),".")),(0,r.kt)("h2",{id:"how-to-add--edit-translations-"},"How to add / edit translations ?"),(0,r.kt)("h3",{id:"using-github"},"Using Github"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"For English, make changes directly to ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nocodb/nocodb/blob/develop/packages/nc-gui/lang/en.json"},"en.json")," & commit to ",(0,r.kt)("inlineCode",{parentName:"li"},"develop")),(0,r.kt)("li",{parentName:"ul"},"For any other language, use ",(0,r.kt)("inlineCode",{parentName:"li"},"crowdin")," option.")),(0,r.kt)("h3",{id:"using-crowdin"},"Using Crowdin"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Setup ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com"},"Crowdin")," account"),(0,r.kt)("li",{parentName:"ul"},"Join ",(0,r.kt)("a",{parentName:"li",href:"https://crowdin.com/project/nocodb"},"NocoDB")," project")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189181511-51b8671e-bee8-45d5-8216-a4a031bc6309.png",alt:"Screenshot 2022-09-08 at 10 26 23 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Click the language that you wish to contribute")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189182132-0eed7d5a-eaa1-43e1-929d-688f375763c1.png",alt:"Screenshot 2022-09-08 at 10 29 56 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Click the ",(0,r.kt)("inlineCode",{parentName:"li"},"Translate")," button; this opens up ",(0,r.kt)("inlineCode",{parentName:"li"},"Crowdin Online Editor"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189182450-999124e8-566c-40af-9d3c-731a11c1b6aa.png",alt:"Screenshot 2022-09-08 at 10 32 17 PM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Select string in ",(0,r.kt)("inlineCode",{parentName:"li"},"English")," on the left-hand menu bar ","[1]"),(0,r.kt)("li",{parentName:"ul"},"Propose changes ","[2]"),(0,r.kt)("li",{parentName:"ul"},"Save ","[3]","\nNote: Crowdin provides translation recommendation's as in ","[4]",". Click directly if it's apt\n")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189184278-69d688ed-4e5a-4d5a-b629-9f6d10d79346.png",alt:"Screenshot 2022-09-08 at 10 37 38 PM"})),(0,r.kt)("p",null,"A GitHub Pull Request will be automatically triggered (periodicity- 6 hours). We will follow up on remaining integration work items."),(0,r.kt)("h4",{id:"reference"},"Reference"),(0,r.kt)("p",null,"Refer following articles to get additional details about Crowdin Portal usage"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/crowdin-intro/"},"Translator Introduction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/for-volunteer-translators/"},"Volunteer Translation Introduction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.crowdin.com/online-editor/"},"Online Editor")," ")),(0,r.kt)("h2",{id:"how-to-add-a-new-language-"},"How to add a new language ?"),(0,r.kt)("h4",{id:"github-changes"},"GitHub changes"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Update enumeration in ",(0,r.kt)("inlineCode",{parentName:"li"},"enums.ts")," ","[packages/nc-gui/lib/enums.ts]"),(0,r.kt)("li",{parentName:"ul"},"Map JSON path in ",(0,r.kt)("inlineCode",{parentName:"li"},"a.i18n.ts")," ","[packages/nc-gui/plugins/a.i18n.ts]")),(0,r.kt)("h4",{id:"crowdin-changes-admin-only"},"Crowdin changes ","[admin only]"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open ",(0,r.kt)("inlineCode",{parentName:"li"},"NocoDB")," project"),(0,r.kt)("li",{parentName:"ul"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Language")," on the home tab"),(0,r.kt)("li",{parentName:"ul"},"Select target language, ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")),(0,r.kt)("li",{parentName:"ul"},"Update array in ",(0,r.kt)("inlineCode",{parentName:"li"},"tests/playwright/tests/language.spec.ts")," ")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189186570-5c1c7cad-6d3f-4937-ab4d-fa7ebe022cb1.png",alt:"Screenshot 2022-09-08 at 10 52 59 PM"})),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189186632-0b9f5f55-0550-4d8f-a8ae-7e9b9076774e.png",alt:"Screenshot 2022-09-08 at 10 54 04 PM"})),(0,r.kt)("h2",{id:"string-categories"},"String Categories"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"General"),": simple & common tokens (save, cancel, submit, open, close, home, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Objects"),": objects from NocoDB POV (project, table, field, column, view, page, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Title"),": screen headers (compact) (menu headers, modal headers)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Lables"),": text box/ radio/ field headers (few words) (Labels over textbox, radio buttons, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Activity"),"/ actions: work items (few words) (Create Project, Delete Table, Add Row, and such)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Tooltip"),": additional information associated with work items (usually lengthy) (Additional information provided for activity)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Placeholder"),": placeholders associated with various textboxes (Text placeholders)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Msg"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Info: general/success category for everything"),(0,r.kt)("li",{parentName:"ul"},"Error: warnings & errors"),(0,r.kt)("li",{parentName:"ul"},"Toast: pop-up toast messages")))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Note: string name should be in camelCase. Use above list as priority order in case of ambiguity.")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cc9fede1.611038ee.js b/packages/noco-docs/dist/assets/js/cc9fede1.611038ee.js new file mode 100644 index 0000000000..4e039ca37a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cc9fede1.611038ee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5228],{10958:e=>{e.exports=JSON.parse('{"label":"Download","permalink":"/tags/download","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cd3c4207.f4ac9c87.js b/packages/noco-docs/dist/assets/js/cd3c4207.f4ac9c87.js new file mode 100644 index 0000000000..0b1f8e916f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cd3c4207.f4ac9c87.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[485],{3905:(e,t,l)=>{l.d(t,{Zo:()=>p,kt:()=>f});var a=l(67294);function n(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function r(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,a)}return l}function i(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?r(Object(l),!0).forEach((function(t){n(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):r(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function o(e,t){if(null==e)return{};var l,a,n=function(e,t){if(null==e)return{};var l,a,n={},r=Object.keys(e);for(a=0;a<r.length;a++)l=r[a],t.indexOf(l)>=0||(n[l]=e[l]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)l=r[a],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(n[l]=e[l])}return n}var s=a.createContext({}),d=function(e){var t=a.useContext(s),l=t;return e&&(l="function"==typeof e?e(t):i(i({},t),e)),l},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var l=e.components,n=e.mdxType,r=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=d(l),m=n,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||r;return l?a.createElement(f,i(i({ref:t},p),{},{components:l})):a.createElement(f,i({ref:t},p))}));function f(e,t){var l=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=l.length,i=new Array(r);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:n,i[1]=o;for(var d=2;d<r;d++)i[d]=l[d];return a.createElement.apply(null,i)}return a.createElement.apply(null,l)}m.displayName="MDXCreateElement"},67047:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var a=l(87462),n=(l(67294),l(3905));const r={title:"Rollup",description:"This article explains how to create & work with a Rollup field.",tags:["Fields","Field types","Links based types","Rollup"],keywords:["Fields","Field types","Links based types","Rollup","Create rollup field"]},i=void 0,o={unversionedId:"fields/field-types/links-based/rollup",id:"fields/field-types/links-based/rollup",title:"Rollup",description:"This article explains how to create & work with a Rollup field.",source:"@site/docs/070.fields/040.field-types/040.links-based/030.rollup.md",sourceDirName:"070.fields/040.field-types/040.links-based",slug:"/fields/field-types/links-based/rollup",permalink:"/fields/field-types/links-based/rollup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/040.links-based/030.rollup.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Links based types",permalink:"/tags/links-based-types"},{label:"Rollup",permalink:"/tags/rollup"}],version:"current",sidebarPosition:30,frontMatter:{title:"Rollup",description:"This article explains how to create & work with a Rollup field.",tags:["Fields","Field types","Links based types","Rollup"],keywords:["Fields","Field types","Links based types","Rollup","Create rollup field"]},sidebar:"tutorialSidebar",previous:{title:"Lookup",permalink:"/fields/field-types/links-based/lookup"},next:{title:"Attachment",permalink:"/fields/field-types/custom-types/attachment"}},s={},d=[{value:"Create a Rollup Field",id:"create-a-rollup-field",level:2},{value:"Aggregation Functions",id:"aggregation-functions",level:3},{value:"Similar links-based fields",id:"similar-links-based-fields",level:2}],p={toc:d},u="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Rollup")," fields are used to aggregate data from fields in the related table. Often used to calculate totals, averages, and other aggregate data."),(0,n.kt)("h2",{id:"create-a-rollup-field"},"Create a Rollup Field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Lookup")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Select the link field from the dropdown. This is the field that links the current table to the related table."),(0,n.kt)("li",{parentName:"ol"},"Select the field for display from the dropdown. This is the field that will be displayed in the current table."),(0,n.kt)("li",{parentName:"ol"},"Select the aggregation function from the dropdown. This is the function that will be used to aggregate the data."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:l(11345).Z,width:"2880",height:"1480"})),(0,n.kt)("h3",{id:"aggregation-functions"},"Aggregation Functions"),(0,n.kt)("p",null,"Here's a table with brief descriptions for each of the aggregation functions supported by NocoDB:"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Aggregation Function"),(0,n.kt)("th",{parentName:"tr",align:null},"Description"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Count"),(0,n.kt)("td",{parentName:"tr",align:null},"Counts the number of records in a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Minimum"),(0,n.kt)("td",{parentName:"tr",align:null},"Retrieves the minimum value from a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Maximum"),(0,n.kt)("td",{parentName:"tr",align:null},"Retrieves the maximum value from a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Average"),(0,n.kt)("td",{parentName:"tr",align:null},"Calculates the average value in a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Sum"),(0,n.kt)("td",{parentName:"tr",align:null},"Adds up all the values in a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Count Distinct"),(0,n.kt)("td",{parentName:"tr",align:null},"Counts the number of distinct values in a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Sum Distinct"),(0,n.kt)("td",{parentName:"tr",align:null},"Adds up all the distinct values in a dataset.")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"Average Distinct"),(0,n.kt)("td",{parentName:"tr",align:null},"Calculates the average of distinct values in a dataset.")))),(0,n.kt)("h2",{id:"similar-links-based-fields"},"Similar links-based fields"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/links"},"Links")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/links-based/lookup"},"Lookup"))))}c.isMDXComponent=!0},11345:(e,t,l)=>{l.d(t,{Z:()=>a});const a=l.p+"assets/images/rollup-bf68cdbc91743484a43f978f74ce18ef.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cd725ea4.d30f312a.js b/packages/noco-docs/dist/assets/js/cd725ea4.d30f312a.js new file mode 100644 index 0000000000..d06eaee956 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cd725ea4.d30f312a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[800],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var l=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,l,o=function(e,t){if(null==e)return{};var n,l,o={},r=Object.keys(e);for(l=0;l<r.length;l++)n=r[l],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(l=0;l<r.length;l++)n=r[l],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var i=l.createContext({}),p=function(e){var t=l.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=p(e.components);return l.createElement(i.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},m=l.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,i=e.parentName,c=u(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,g=s["".concat(i,".").concat(m)]||s[m]||d[m]||r;return n?l.createElement(g,a(a({ref:t},c),{},{components:n})):l.createElement(g,a({ref:t},c))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,a=new Array(r);a[0]=m;var u={};for(var i in t)hasOwnProperty.call(t,i)&&(u[i]=t[i]);u.originalType=e,u[s]="string"==typeof e?e:o,a[1]=u;for(var p=2;p<r;p++)a[p]=n[p];return l.createElement.apply(null,a)}return l.createElement.apply(null,n)}m.displayName="MDXCreateElement"},87956:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>u,toc:()=>p});var l=n(87462),o=(n(67294),n(3905));const r={title:"Rollup",description:"Understanding Rollup Column!"},a=void 0,u={unversionedId:"setup-and-usages/rollup",id:"version-0.109.7/setup-and-usages/rollup",title:"Rollup",description:"Understanding Rollup Column!",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/080.rollup.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/rollup",permalink:"/0.109.7/setup-and-usages/rollup",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/080.rollup.md",tags:[],version:"0.109.7",sidebarPosition:80,frontMatter:{title:"Rollup",description:"Understanding Rollup Column!"},sidebar:"tutorialSidebar",previous:{title:"Lookup",permalink:"/0.109.7/setup-and-usages/lookup"},next:{title:"Formulas",permalink:"/0.109.7/setup-and-usages/formulas"}},i={},p=[{value:"Rollup",id:"rollup",level:2},{value:"RollUp AGGREGATION functions supported",id:"rollup-aggregation-functions-supported",level:3},{value:"Adding a rollup column",id:"adding-a-rollup-column",level:2},{value:"1. Add new column",id:"1-add-new-column",level:4},{value:"2. Feed column name",id:"2-feed-column-name",level:4},{value:"3. Select Column type as 'Rollup'",id:"3-select-column-type-as-rollup",level:4},{value:"4. Choose Child Table",id:"4-choose-child-table",level:4},{value:"5. Choose on \u200bChild column",id:"5-choose-on-child-column",level:4},{value:"6. Select \u200bAggregate function",id:"6-select-aggregate-function",level:4},{value:"7. Click on Save",id:"7-click-on-save",level:4}],c={toc:p},s="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,l.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"rollup"},"Rollup"),(0,o.kt)("p",null,"Sample Organization structure:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"5 Departments, each department has a team name & associated team code"),(0,o.kt)("li",{parentName:"ul"},"5 employees working at different Departments"),(0,o.kt)("li",{parentName:"ul"},"Teams ",(0,o.kt)("strong",{parentName:"li"},"has many")," Employees : relationship has been defined")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189296162-536185f1-31ed-40df-b668-deed7ad630aa.png",alt:"Screenshot 2022-09-09 at 12 57 32 PM"})),(0,o.kt)("h3",{id:"rollup-aggregation-functions-supported"},"RollUp AGGREGATION functions supported"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Count"),(0,o.kt)("li",{parentName:"ul"},"Minimum"),(0,o.kt)("li",{parentName:"ul"},"Maximum"),(0,o.kt)("li",{parentName:"ul"},"Average"),(0,o.kt)("li",{parentName:"ul"},"Sum"),(0,o.kt)("li",{parentName:"ul"},"Count Distinct"),(0,o.kt)("li",{parentName:"ul"},"Sum Distinct"),(0,o.kt)("li",{parentName:"ul"},"Average Distinct")),(0,o.kt)("p",null,"Now, we can explore how to extract employee count information per team using ",(0,o.kt)("strong",{parentName:"p"},'"ROLLUP"')," columns"),(0,o.kt)("h2",{id:"adding-a-rollup-column"},"Adding a rollup column"),(0,o.kt)("h4",{id:"1-add-new-column"},"1. Add new column"),(0,o.kt)("p",null,"Click on '+' icon to the left of column headers in Departments table"),(0,o.kt)("h4",{id:"2-feed-column-name"},"2. Feed column name"),(0,o.kt)("h4",{id:"3-select-column-type-as-rollup"},"3. Select Column type as 'Rollup'"),(0,o.kt)("h4",{id:"4-choose-child-table"},"4. Choose Child Table"),(0,o.kt)("p",null,"Table Employee in our example"),(0,o.kt)("h4",{id:"5-choose-on-child-column"},"5. Choose on \u200bChild column"),(0,o.kt)("p",null,"Pick appropriate column for aggreagation"),(0,o.kt)("h4",{id:"6-select-aggregate-function"},"6. Select \u200bAggregate function"),(0,o.kt)("p",null,'Aggregate function will be "count" in our case'),(0,o.kt)("h4",{id:"7-click-on-save"},"7. Click on Save"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189297619-4d5c815b-6c97-41fa-978e-9b645448e508.png",alt:"Screenshot 2022-09-09 at 1 03 49 PM"})),(0,o.kt)("p",null,"Column ",(0,o.kt)("inlineCode",{parentName:"p"},"Employee Count")," is populated with appropriate information"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/194856842-e35a6424-fb95-4805-8efa-a559563e4b71.png",alt:"image"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/cfe1d2b7.e157c52a.js b/packages/noco-docs/dist/assets/js/cfe1d2b7.e157c52a.js new file mode 100644 index 0000000000..db8f79cb0a --- /dev/null +++ b/packages/noco-docs/dist/assets/js/cfe1d2b7.e157c52a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8466],{58137:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-typesense","id":"default"}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d01bd8c5.e0aecdfc.js b/packages/noco-docs/dist/assets/js/d01bd8c5.e0aecdfc.js new file mode 100644 index 0000000000..a143f95e24 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d01bd8c5.e0aecdfc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8820],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},l="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),l=p(n),f=o,g=l["".concat(c,".").concat(f)]||l[f]||d[f]||i;return n?r.createElement(g,s(s({ref:t},u),{},{components:n})):r.createElement(g,s({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,s=new Array(i);s[0]=f;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a[l]="string"==typeof e?e:o,s[1]=a;for(var p=2;p<i;p++)s[p]=n[p];return r.createElement.apply(null,s)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},98962:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>p});var r=n(87462),o=(n(67294),n(3905));const i={title:"Project settings",description:"General project configuration options"},s=void 0,a={unversionedId:"setup-and-usages/project-settings",id:"version-0.109.7/setup-and-usages/project-settings",title:"Project settings",description:"General project configuration options",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/260.project-settings.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/project-settings",permalink:"/0.109.7/setup-and-usages/project-settings",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/260.project-settings.md",tags:[],version:"0.109.7",sidebarPosition:260,frontMatter:{title:"Project settings",description:"General project configuration options"},sidebar:"tutorialSidebar",previous:{title:"Audit",permalink:"/0.109.7/setup-and-usages/audit"},next:{title:"Accessing APIs",permalink:"/0.109.7/developer-resources/accessing-apis"}},c={},p=[{value:"Overview",id:"overview",level:2}],u={toc:p},l="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(l,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"Generic project configuration options are retained under ",(0,o.kt)("inlineCode",{parentName:"p"},"Project Settings")," menu. To access it, click the down arrow button next to Project Name on the top left side, then select ",(0,o.kt)("inlineCode",{parentName:"p"},"Team & Settings"),"."),(0,o.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,o.kt)("p",null,"Then, under SETTINGS, click ",(0,o.kt)("inlineCode",{parentName:"p"},"Project Settings"),"."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219830971-9518fa21-a45c-4d49-af3f-2f933d779ecd.png",alt:"image"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d3abb5b7.3e76ca95.js b/packages/noco-docs/dist/assets/js/d3abb5b7.3e76ca95.js new file mode 100644 index 0000000000..788894dce2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d3abb5b7.3e76ca95.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3447],{85920:e=>{e.exports=JSON.parse('{"label":"Grid view","permalink":"/tags/grid-view","allTagsPath":"/tags","count":12,"items":[{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","permalink":"/table-operations/filter"},{"id":"views/view-types/grid","title":"Grid","description":"Learn how to work with grid view in NocoDB.","permalink":"/views/view-types/grid"},{"id":"table-operations/group-by","title":"Grouping records","description":"Learn how to group records in NocoDB.","permalink":"/table-operations/group-by"},{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"},{"id":"table-operations/row-height","title":"Record height","description":"Learn how to adjust the height of records in NocoDB.","permalink":"/table-operations/row-height"},{"id":"table-operations/search","title":"Search","description":"Learn how to search for records in NocoDB.","permalink":"/table-operations/search"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"},{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","permalink":"/table-operations/sort"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d427e024.48b2c64a.js b/packages/noco-docs/dist/assets/js/d427e024.48b2c64a.js new file mode 100644 index 0000000000..bfe086b65f --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d427e024.48b2c64a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5413],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function c(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),l=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},u=function(e){var t=l(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),p=l(a),m=r,g=p["".concat(s,".").concat(m)]||p[m]||d[m]||i;return a?n.createElement(g,o(o({ref:t},u),{},{components:a})):n.createElement(g,o({ref:t},u))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=m;var c={};for(var s in t)hasOwnProperty.call(t,s)&&(c[s]=t[s]);c.originalType=e,c[p]="string"==typeof e?e:r,o[1]=c;for(var l=2;l<i;l++)o[l]=a[l];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},6314:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=a(87462),r=(a(67294),a(3905));const i={title:"Data Sources",description:"NocoDB Data-Source sync, access control & re-config"},o=void 0,c={unversionedId:"setup-and-usages/meta-management",id:"version-0.109.7/setup-and-usages/meta-management",title:"Data Sources",description:"NocoDB Data-Source sync, access control & re-config",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/240.meta-management.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/meta-management",permalink:"/0.109.7/setup-and-usages/meta-management",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/240.meta-management.md",tags:[],version:"0.109.7",sidebarPosition:240,frontMatter:{title:"Data Sources",description:"NocoDB Data-Source sync, access control & re-config"},sidebar:"tutorialSidebar",previous:{title:"Team & Auth",permalink:"/0.109.7/setup-and-usages/team-and-auth"},next:{title:"Audit",permalink:"/0.109.7/setup-and-usages/audit"}},s={},l=[{value:"Overview",id:"overview",level:2},{value:"Accessing Data Sources",id:"accessing-data-sources",level:2},{value:"Sync Metadata",id:"sync-metadata",level:2},{value:"UI Access Control",id:"ui-access-control",level:2},{value:"ERD",id:"erd",level:2},{value:"Junction table names within ERD",id:"junction-table-names-within-erd",level:3},{value:"Edit external database configuration parameters",id:"edit-external-database-configuration-parameters",level:2},{value:"Unlink data source",id:"unlink-data-source",level:2},{value:"Data source visibility",id:"data-source-visibility",level:2}],u={toc:l},p="wrapper";function d(e){let{components:t,...a}=e;return(0,r.kt)(p,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"overview"},"Overview"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources")," sub-menu includes "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Database Metadata"),(0,r.kt)("li",{parentName:"ul"},"UI Access Control"),(0,r.kt)("li",{parentName:"ul"},"ERD"),(0,r.kt)("li",{parentName:"ul"},"Add/Remove new data source"),(0,r.kt)("li",{parentName:"ul"},"Edit existing data source configuration"),(0,r.kt)("li",{parentName:"ul"},"Edit data source visibility options ")),(0,r.kt)("p",null,"Note that, currently only one external data source can be added per project."),(0,r.kt)("h2",{id:"accessing-data-sources"},"Accessing Data Sources"),(0,r.kt)("p",null,"To access it, click the down arrow button next to Project Name on the top left side, then select ",(0,r.kt)("inlineCode",{parentName:"p"},"Team & Settings")," and clicking ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),"."),(0,r.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219833316-1fb234f0-583f-4ab8-b8d7-a6e249e7cd97.png",alt:"image"})),(0,r.kt)("h2",{id:"sync-metadata"},"Sync Metadata"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", click ",(0,r.kt)("inlineCode",{parentName:"p"},"Sync Metadata"),", you can see your metadata sync status. If it is out of sync, you can sync the schema. See ",(0,r.kt)("a",{parentName:"p",href:"/0.109.7/setup-and-usages/sync-schema"},"Sync Schema")," for more."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219833485-3bcaa6ec-88bc-47cc-b938-5abb4835dc31.png",alt:"image"})),(0,r.kt)("h2",{id:"ui-access-control"},"UI Access Control"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", click ",(0,r.kt)("inlineCode",{parentName:"p"},"UI ACL"),", you can control the access to each table by roles. "),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219833072-20e9f4ad-fd1c-4e96-9112-6edda1447ec6.png",alt:"image"})),(0,r.kt)("h2",{id:"erd"},"ERD"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", click ",(0,r.kt)("inlineCode",{parentName:"p"},"ERD"),", you can see the ERD of your database."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219832288-f6266544-a259-4667-95d9-0e5ce7ac5d27.png",alt:"image"})),(0,r.kt)("h3",{id:"junction-table-names-within-erd"},"Junction table names within ERD"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Enable ",(0,r.kt)("inlineCode",{parentName:"li"},"Show M2M Tables")," within ",(0,r.kt)("inlineCode",{parentName:"li"},"Project Settings")," menu"),(0,r.kt)("li",{parentName:"ul"},"Double click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Show Columns")," to see additional checkboxes get enabled.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Enabling which you should be able to see junction tables and their table names.")))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219832436-9c1311c3-854c-4b31-9c94-8035dfba2a2b.png",alt:"image"})),(0,r.kt)("h2",{id:"edit-external-database-configuration-parameters"},"Edit external database configuration parameters"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", click ",(0,r.kt)("inlineCode",{parentName:"p"},"Edit"),", you can re-configure database credentials.",(0,r.kt)("br",{parentName:"p"}),"\n","Please make sure database configuration parameters are valid. Any incorrect parameters could lead to schema loss!"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219832592-14209cbf-d980-4e14-9a59-bda1b778a74e.png",alt:"image"})),(0,r.kt)("h2",{id:"unlink-data-source"},"Unlink data source"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", click ",(0,r.kt)("inlineCode",{parentName:"p"},"Delete")," against the data source that you wish to un-link."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219832810-a3e9ed88-f732-4f30-9228-ff782be0b9d6.png",alt:"image"})),(0,r.kt)("h2",{id:"data-source-visibility"},"Data source visibility"),(0,r.kt)("p",null,"Go to ",(0,r.kt)("inlineCode",{parentName:"p"},"Data Sources"),", toggle ",(0,r.kt)("inlineCode",{parentName:"p"},"Radio-button")," against the data source that you wish to hide/un-hide."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219832914-f485099c-423f-4df8-bf00-b509288efe6d.png",alt:"image"})))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d5451361.2c2752cf.js b/packages/noco-docs/dist/assets/js/d5451361.2c2752cf.js new file mode 100644 index 0000000000..94e78525a3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d5451361.2c2752cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1205],{69033:e=>{e.exports=JSON.parse('{"label":"Profile","permalink":"/tags/profile","allTagsPath":"/tags","count":1,"items":[{"id":"account-settings/profile-page","title":"Profile page","description":"This article explains how to manage your profile page.","permalink":"/account-settings/profile-page"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d65a8f51.3fc6745d.js b/packages/noco-docs/dist/assets/js/d65a8f51.3fc6745d.js new file mode 100644 index 0000000000..925d044016 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d65a8f51.3fc6745d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5221],{3763:e=>{e.exports=JSON.parse('{"label":"Swagger","permalink":"/tags/swagger","allTagsPath":"/tags","count":1,"items":[{"id":"bases/actions-on-base","title":"Actions on base","description":"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.","permalink":"/bases/actions-on-base"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d69d4db4.b43b4016.js b/packages/noco-docs/dist/assets/js/d69d4db4.b43b4016.js new file mode 100644 index 0000000000..388e5cf683 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d69d4db4.b43b4016.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[333],{29497:e=>{e.exports=JSON.parse('{"label":"Reorder","permalink":"/tags/reorder","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d767d123.35c7072a.js b/packages/noco-docs/dist/assets/js/d767d123.35c7072a.js new file mode 100644 index 0000000000..f9d7c1f5b7 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d767d123.35c7072a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4743],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var r=n.createContext({}),p=function(e){var t=n.useContext(r),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(r.Provider,{value:t},e.children)},d="mdxType",b={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,l=e.originalType,r=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(a),m=i,h=d["".concat(r,".").concat(m)]||d[m]||b[m]||l;return a?n.createElement(h,s(s({ref:t},c),{},{components:a})):n.createElement(h,s({ref:t},c))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=a.length,s=new Array(l);s[0]=m;var o={};for(var r in t)hasOwnProperty.call(t,r)&&(o[r]=t[r]);o.originalType=e,o[d]="string"==typeof e?e:i,s[1]=o;for(var p=2;p<l;p++)s[p]=a[p];return n.createElement.apply(null,s)}return n.createElement.apply(null,a)}m.displayName="MDXCreateElement"},54004:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var n=a(87462),i=(a(67294),a(3905));const l={title:"Actions on base",description:"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.",tags:["Bases","Rename","Duplicate","Delete","Relations","Swagger","REST APIs"],keywords:["NocoDB base","base rename","base duplicate","base delete","base star","base context menu","base owner","base collaboration","base actions"]},s=void 0,o={unversionedId:"bases/actions-on-base",id:"bases/actions-on-base",title:"Actions on base",description:"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.",source:"@site/docs/040.bases/070.actions-on-base.md",sourceDirName:"040.bases",slug:"/bases/actions-on-base",permalink:"/bases/actions-on-base",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/070.actions-on-base.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Rename",permalink:"/tags/rename"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Delete",permalink:"/tags/delete"},{label:"Relations",permalink:"/tags/relations"},{label:"Swagger",permalink:"/tags/swagger"},{label:"REST APIs",permalink:"/tags/rest-ap-is"}],version:"current",sidebarPosition:70,frontMatter:{title:"Actions on base",description:"Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.",tags:["Bases","Rename","Duplicate","Delete","Relations","Swagger","REST APIs"],keywords:["NocoDB base","base rename","base duplicate","base delete","base star","base context menu","base owner","base collaboration","base actions"]},sidebar:"tutorialSidebar",previous:{title:"Share base",permalink:"/bases/share-base"},next:{title:"Table overview",permalink:"/tables/table-overview"}},r={},p=[{value:"Base context menu",id:"base-context-menu",level:2},{value:"Rename base",id:"rename-base",level:2},{value:"Star base",id:"star-base",level:2},{value:"Remove a base from starred list",id:"remove-a-base-from-starred-list",level:3},{value:"Duplicate base",id:"duplicate-base",level:2},{value:"Delete base",id:"delete-base",level:2},{value:"Developer features",id:"developer-features",level:2},{value:"Base settings",id:"base-settings",level:3},{value:"REST APIs",id:"rest-apis",level:3},{value:"Relations",id:"relations",level:3},{value:"Related articles",id:"related-articles",level:2}],c={toc:p},d="wrapper";function b(e){let{components:t,...l}=e;return(0,i.kt)(d,(0,n.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"base-context-menu"},"Base context menu"),(0,i.kt)("p",null,"The base context menu offers a selection of swift actions that can be executed on a base. To access this menu, click on the ellipsis symbol (",(0,i.kt)("inlineCode",{parentName:"p"},"..."),") located adjacent to the base name within the left sidebar.\n",(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("h2",{id:"rename-base"},"Rename base"),(0,i.kt)("p",null,"To modify the name of a base, you can easily do so by following these steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Rename")," option."),(0,i.kt)("li",{parentName:"ol"},"Input the new name for the base directly within the field provided and then press the ",(0,i.kt)("inlineCode",{parentName:"li"},"Enter")," key to confirm and save the updated name.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base rename",src:a(34810).Z,width:"2876",height:"970"})),(0,i.kt)("h2",{id:"star-base"},"Star base"),(0,i.kt)("p",null,"You can star a base by following simple steps below:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Add to Starred")," option."),(0,i.kt)("li",{parentName:"ol"},'Subsequently, the designated base will be placed into the "Starred" section, conveniently positioned within the left sidebar.')),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base starred",src:a(49581).Z,width:"2878",height:"1022"})),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Starred base will appear in both ",(0,i.kt)("inlineCode",{parentName:"p"},"Starred")," section and ",(0,i.kt)("inlineCode",{parentName:"p"},"All Bases")," section on the left sidebar.")),(0,i.kt)("h3",{id:"remove-a-base-from-starred-list"},"Remove a base from starred list"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Remove from Starred")," option."),(0,i.kt)("li",{parentName:"ol"},"Subsequently, the designated base will be removed from the ",(0,i.kt)("inlineCode",{parentName:"li"},"Starred")," section.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(49879).Z,width:"2878",height:"1414"})),(0,i.kt)("h2",{id:"duplicate-base"},"Duplicate base"),(0,i.kt)("p",null,"To duplicate a base, you can follow these straightforward steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Duplicate")," option."),(0,i.kt)("li",{parentName:"ol"},"Optionally, you can configure the duplication process with the following choices:\na) ",(0,i.kt)("inlineCode",{parentName:"li"},"Include data"),": You have the flexibility to choose whether to duplicate the base with or without its data.\nb) ",(0,i.kt)("inlineCode",{parentName:"li"},"Include views"),": You can decide whether to duplicate the base with or without its views."),(0,i.kt)("li",{parentName:"ol"},"Click the ",(0,i.kt)("inlineCode",{parentName:"li"},"Confirm")," button in the confirmation modal that pops up."),(0,i.kt)("li",{parentName:"ol"},"A new base will be created, mirroring the original base's schema and data/views based on the configurations specified in step 3.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(99065).Z,width:"2876",height:"1008"})),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"A duplicate base will be generated within the same workspace as the original base."),(0,i.kt)("li",{parentName:"ul"},"The duplicated base will be suffixed with ",(0,i.kt)("inlineCode",{parentName:"li"}," Copy")," in its name."),(0,i.kt)("li",{parentName:"ul"},"You will be designated as the ",(0,i.kt)("inlineCode",{parentName:"li"},"base owner")," upon the duplication of the base."),(0,i.kt)("li",{parentName:"ul"},"Existing base members will not be transferred to the duplicated base."))),(0,i.kt)("h2",{id:"delete-base"},"Delete base"),(0,i.kt)("p",null,"If you determine that a base is no longer necessary, you have the option to permanently remove it from your workspace. Deleting a base will delete all the tables and data associated with it."),(0,i.kt)("admonition",{type:"danger"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"This action cannot be undone."))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"Only ",(0,i.kt)("strong",{parentName:"p"},"base owner")," can delete a workspace.")),(0,i.kt)("p",null,"To delete a base:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete")," option."),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Delete base")," button on the confirmation dialog box.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base delete",src:a(30521).Z,width:"2876",height:"1156"})),(0,i.kt)("h2",{id:"developer-features"},"Developer features"),(0,i.kt)("h3",{id:"base-settings"},"Base settings"),(0,i.kt)("p",null,"Some general configurations are available for you to modify within the base settings."),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Show M2M tables"),": Toggle this option to display/hide M2M tables within the left sidebar. Many-to-many relation is supported via a junction table & is hidden by default."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Show NULL in cells"),": Toggle this option to display/hide NULL values within the cells of the table. This helps differentiate against cells holding EMPTY string."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Show NULL & Empty in Filters"),": Enable 'additional' filters to differentiate fields containing NULL & Empty Strings. Default support for Blank treats both NULL & Empty strings alike.")),(0,i.kt)("p",null,"To configure base settings, you can follow these steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Settings")," option.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"bsae settings",src:a(53920).Z,width:"2876",height:"1146"})),(0,i.kt)("h3",{id:"rest-apis"},"REST APIs"),(0,i.kt)("p",null,"NocoDB provides a Swagger UI for each base. To access the Swagger UI, follow these steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"REST APIs")," option.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"swagger",src:a(4230).Z,width:"2874",height:"1746"})),(0,i.kt)("h3",{id:"relations"},"Relations"),(0,i.kt)("p",null,"NocoDB provides a visual representation of the relations between tables within a base. To access the relations diagram, follow these steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Initiate the base context menu by clicking on the ellipses ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," located next to the base name within the left sidebar."),(0,i.kt)("li",{parentName:"ol"},"In the dropdown menu that appears, choose the ",(0,i.kt)("inlineCode",{parentName:"li"},"Relations")," option.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base context menu",src:a(66831).Z,width:"2876",height:"1412"})),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"base relations",src:a(5929).Z,width:"2876",height:"1796"})),(0,i.kt)("h2",{id:"related-articles"},"Related articles"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/create-base"},"Create an empty base")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}b.isMDXComponent=!0},66831:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-context-menu-8cdc9e3b6c6f450d66cb324e8ea1feea.png"},30521:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-delete-15390ff1d15eddee39ea1ea63f72a6af.png"},99065:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-duplicate-88ebe6a5fcc9c36b5f7d76b65726d9b5.png"},5929:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-relations-aaa09c0623353f552c7b90a8aa6beacb.png"},49879:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-remove-from-starred-a5fc6ed9e9cbc2251844fc0cd8afba24.png"},34810:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-rename-027fd5fbcdca058a00c8213c263d1836.png"},53920:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-settings-194c9bb15d79c76f4bfea5746a077125.png"},49581:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-starred-082719a6b8a527be8b23a2d511867ccd.png"},4230:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/base-swagger-66b41d2cd5d5e0a8f51ff026b6cfab85.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d94fff3f.a6583a34.js b/packages/noco-docs/dist/assets/js/d94fff3f.a6583a34.js new file mode 100644 index 0000000000..bcbf515c29 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d94fff3f.a6583a34.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1705],{71730:o=>{o.exports=JSON.parse('{"label":"Audit","permalink":"/tags/audit","allTagsPath":"/tags","count":2,"items":[{"id":"data-sources/actions-on-data-sources","title":"Actions on Data sources","description":"Learn more about actions that can be performed on data sources in NocoDB.","permalink":"/data-sources/actions-on-data-sources"},{"id":"records/expand-record","title":"Expanded record","description":"Learn how to expand a record & work with it in NocoDB.","permalink":"/records/expand-record"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d96af704.abc5835c.js b/packages/noco-docs/dist/assets/js/d96af704.abc5835c.js new file mode 100644 index 0000000000..5f9b75918c --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d96af704.abc5835c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2582],{30004:e=>{e.exports=JSON.parse('{"label":"Show/hide","permalink":"/tags/show-hide","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/d9e65f56.f4c9b0b5.js b/packages/noco-docs/dist/assets/js/d9e65f56.f4c9b0b5.js new file mode 100644 index 0000000000..0c8b483b92 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/d9e65f56.f4c9b0b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8379],{42899:s=>{s.exports=JSON.parse('{"label":"Api Tokens","permalink":"/tags/api-tokens","allTagsPath":"/tags","count":1,"items":[{"id":"account-settings/api-tokens","title":"API tokens","description":"This article explains how to create and work with API Tokens.","permalink":"/account-settings/api-tokens"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/da4f93ee.15205e4b.js b/packages/noco-docs/dist/assets/js/da4f93ee.15205e4b.js new file mode 100644 index 0000000000..aca06e1c43 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/da4f93ee.15205e4b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4882],{3905:(e,t,i)=>{i.d(t,{Zo:()=>c,kt:()=>m});var l=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function d(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?a(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):a(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function o(e,t){if(null==e)return{};var i,l,n=function(e,t){if(null==e)return{};var i,l,n={},a=Object.keys(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var r=l.createContext({}),s=function(e){var t=l.useContext(r),i=t;return e&&(i="function"==typeof e?e(t):d(d({},t),e)),i},c=function(e){var t=s(e.components);return l.createElement(r.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},f=l.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,r=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),p=s(i),f=n,m=p["".concat(r,".").concat(f)]||p[f]||u[f]||a;return i?l.createElement(m,d(d({ref:t},c),{},{components:i})):l.createElement(m,d({ref:t},c))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,d=new Array(a);d[0]=f;var o={};for(var r in t)hasOwnProperty.call(t,r)&&(o[r]=t[r]);o.originalType=e,o[p]="string"==typeof e?e:n,d[1]=o;for(var s=2;s<a;s++)d[s]=i[s];return l.createElement.apply(null,d)}return l.createElement.apply(null,i)}f.displayName="MDXCreateElement"},47221:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>d,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>s});var l=i(87462),n=(i(67294),i(3905));const a={title:"Multi-field editor",description:"Understanding use of multi-field editor in NocoDB!",tags:["Fields","Multi-fields editor","Productivity hacks"],keywords:["NocoDB fields editor","fields editor","fields editor in nocoDB"]},d=void 0,o={unversionedId:"fields/multi-fields-editor",id:"fields/multi-fields-editor",title:"Multi-field editor",description:"Understanding use of multi-field editor in NocoDB!",source:"@site/docs/070.fields/050.multi-fields-editor.md",sourceDirName:"070.fields",slug:"/fields/multi-fields-editor",permalink:"/fields/multi-fields-editor",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/050.multi-fields-editor.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Multi-fields editor",permalink:"/tags/multi-fields-editor"},{label:"Productivity hacks",permalink:"/tags/productivity-hacks"}],version:"current",sidebarPosition:50,frontMatter:{title:"Multi-field editor",description:"Understanding use of multi-field editor in NocoDB!",tags:["Fields","Multi-fields editor","Productivity hacks"],keywords:["NocoDB fields editor","fields editor","fields editor in nocoDB"]},sidebar:"tutorialSidebar",previous:{title:"Duration",permalink:"/fields/field-types/date-time-based/duration"},next:{title:"Actions on field",permalink:"/fields/actions-on-field"}},r={},s=[{value:"Accessing the Multi-Field Editor",id:"accessing-the-multi-field-editor",level:2},{value:"Adding fields",id:"adding-fields",level:2},{value:"Editing fields",id:"editing-fields",level:2},{value:"Deleting fields",id:"deleting-fields",level:2},{value:"Reordering fields",id:"reordering-fields",level:2},{value:"Show / Hide fields",id:"show--hide-fields",level:2}],c={toc:s},p="wrapper";function u(e){let{components:t,...a}=e;return(0,n.kt)(p,(0,l.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"NocoDB offers a handy tool for easily managing the fields within a table. With this tool, you can add, modify, rename, arrange, or hide fields efficiently. It's particularly useful when creating a new table structure or making changes to an existing one."),(0,n.kt)("h2",{id:"accessing-the-multi-field-editor"},"Accessing the Multi-Field Editor"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Navigate to the table you wish to edit"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Details")," in the navbar"),(0,n.kt)("li",{parentName:"ol"},"Select ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields")," tab")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Access",src:i(67171).Z,width:"2880",height:"1824"})),(0,n.kt)("h2",{id:"adding-fields"},"Adding fields"),(0,n.kt)("p",null,"On the Multi-field editor page, "),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Add Field")," button to add a new field."),(0,n.kt)("li",{parentName:"ol"},"Enter the field name and select the field type; configure default value (optional)."),(0,n.kt)("li",{parentName:"ol"},"Field will be added to the end of the list. You can reorder the fields as needed. You can add / update multiple fields in one go & save all at once."),(0,n.kt)("li",{parentName:"ol"},"Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Save changes")," button to save the changes.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Add field",src:i(39180).Z,width:"2880",height:"1800"})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"You can add / update/ delete multiple fields & save changes in one go."),(0,n.kt)("li",{parentName:"ul"},"Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Restore")," to discard edits to a particular field. Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Reset")," to discard all active changes on multi-field editor."))),(0,n.kt)("h2",{id:"editing-fields"},"Editing fields"),(0,n.kt)("p",null,"On the Multi-field editor page,"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on the field you wish to edit."),(0,n.kt)("li",{parentName:"ol"},"Make the necessary changes in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Edit Field")," modal. You can update the field name, type, default value, and other attributes."),(0,n.kt)("li",{parentName:"ol"},"Updates to the field are recorded in the fields list view. You can add / update multiple fields in one go & save all at once."),(0,n.kt)("li",{parentName:"ol"},"Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Save changes")," button to save the changes.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Edit field",src:i(24327).Z,width:"2880",height:"1800"})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"You can add / update/ delete multiple fields & save changes in one go. "),(0,n.kt)("li",{parentName:"ul"},"Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Restore")," to discard edits to a particular field. Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Reset")," to discard all active changes on multi-field editor."))),(0,n.kt)("h2",{id:"deleting-fields"},"Deleting fields"),(0,n.kt)("p",null,"On the Multi-field editor page,"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Hover over the field you wish to delete, select ",(0,n.kt)("inlineCode",{parentName:"li"},"...")," icon to open context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Delete")," option to delete the field."),(0,n.kt)("li",{parentName:"ol"},"Deletions in the table are recorded in the fields list view. You can delete multiple fields in one go & save all at once."),(0,n.kt)("li",{parentName:"ol"},"Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Save changes")," button to save the changes.")),(0,n.kt)("p",null,"After all the changes are made, click ",(0,n.kt)("inlineCode",{parentName:"p"},"Save changes")," button to save the changes."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Delete field",src:i(92766).Z,width:"2880",height:"1800"})),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Delete field",src:i(10853).Z,width:"2880",height:"1800"})),(0,n.kt)("admonition",{type:"tip"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"You can add / update/ delete multiple fields & save changes in one go."),(0,n.kt)("li",{parentName:"ul"},"Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Restore")," to discard edits to a particular field. Use ",(0,n.kt)("inlineCode",{parentName:"li"},"Reset")," to discard all active changes on multi-field editor."))),(0,n.kt)("h2",{id:"reordering-fields"},"Reordering fields"),(0,n.kt)("p",null,"On the Multi-field editor page, use ",(0,n.kt)("inlineCode",{parentName:"p"},"drag-drop")," handle to drag and drop the fields to reorder them."),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"The changes will only be saved when you click ",(0,n.kt)("inlineCode",{parentName:"p"},"Save changes")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Reorder fields",src:i(40169).Z,width:"2880",height:"1800"})),(0,n.kt)("h2",{id:"show--hide-fields"},"Show / Hide fields"),(0,n.kt)("p",null,"On the Multi-field editor page, use the ",(0,n.kt)("inlineCode",{parentName:"p"},"toggle")," button next to the fields to show or hide them."),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("p",{parentName:"admonition"},"The changes will only be saved when you click ",(0,n.kt)("inlineCode",{parentName:"p"},"Save changes")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Show / Hide fields",src:i(93750).Z,width:"2880",height:"1800"})))}u.isMDXComponent=!0},67171:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-1-ddd6d6729461087c92975c45ce91d6f5.png"},39180:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-2-0667da2fd4b01aff63dd46bd6de88c45.png"},24327:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-3-ad3441d6a5768c22f4492f08b27f1e1c.png"},92766:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-4-fe455a4c037d3a57453c392882011d3f.png"},10853:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-5-c94a775143e65de178bf5433a3d065e0.png"},93750:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-6-b620074db2f4712246b9cc176b31fbf4.png"},40169:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/editor-7-70e0e1228c366d69cbe4b261fa7e0368.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/dc1c5b3c.db40eb4b.js b/packages/noco-docs/dist/assets/js/dc1c5b3c.db40eb4b.js new file mode 100644 index 0000000000..3844edd787 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/dc1c5b3c.db40eb4b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1576],{50742:t=>{t.exports=JSON.parse('{"label":"JSON","permalink":"/tags/json","allTagsPath":"/tags","count":4,"items":[{"id":"tables/create-table-via-import","title":"Create table via import","description":"Learn how to create a table in NocoDB via import from CSV, Excel or JSON.","permalink":"/tables/create-table-via-import"},{"id":"table-operations/download","title":"Download","description":"NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.","permalink":"/table-operations/download"},{"id":"tables/import-data-into-existing-table","title":"Import data into an existing table","description":"Learn how to import data into an existing table in NocoDB.","permalink":"/tables/import-data-into-existing-table"},{"id":"fields/field-types/custom-types/json","title":"JSON","description":"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.","permalink":"/fields/field-types/custom-types/json"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ded49de4.41121548.js b/packages/noco-docs/dist/assets/js/ded49de4.41121548.js new file mode 100644 index 0000000000..a811d0a268 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ded49de4.41121548.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9868],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function d(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)a=l[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=r.createContext({}),p=function(e){var t=r.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},m=function(e){var t=p(e.components);return r.createElement(o.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,o=e.parentName,m=d(e,["components","mdxType","originalType","parentName"]),s=p(a),f=n,c=s["".concat(o,".").concat(f)]||s[f]||u[f]||l;return a?r.createElement(c,i(i({ref:t},m),{},{components:a})):r.createElement(c,i({ref:t},m))}));function c(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,i=new Array(l);i[0]=f;var d={};for(var o in t)hasOwnProperty.call(t,o)&&(d[o]=t[o]);d.originalType=e,d[s]="string"==typeof e?e:n,i[1]=d;for(var p=2;p<l;p++)i[p]=a[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}f.displayName="MDXCreateElement"},34654:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var r=a(87462),n=(a(67294),a(3905));const l={title:"Date Time",description:"This article explains how to create & work with a Date Time field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create date time field"]},i=void 0,d={unversionedId:"fields/field-types/date-time-based/date-time",id:"fields/field-types/date-time-based/date-time",title:"Date Time",description:"This article explains how to create & work with a Date Time field.",source:"@site/docs/070.fields/040.field-types/070.date-time-based/010.date-time.md",sourceDirName:"070.fields/040.field-types/070.date-time-based",slug:"/fields/field-types/date-time-based/date-time",permalink:"/fields/field-types/date-time-based/date-time",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/070.date-time-based/010.date-time.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Date & Time",permalink:"/tags/date-time"}],version:"current",sidebarPosition:10,frontMatter:{title:"Date Time",description:"This article explains how to create & work with a Date Time field.",tags:["Fields","Field types","Date & Time"],keywords:["Fields","Field types","Date & Time","Create date time field"]},sidebar:"tutorialSidebar",previous:{title:"Conditional expressions",permalink:"/fields/field-types/formula/conditional-expressions"},next:{title:"Date",permalink:"/fields/field-types/date-time-based/date"}},o={},p=[{value:"Create a date time field",id:"create-a-date-time-field",level:2},{value:"Supported date formats",id:"supported-date-formats",level:3},{value:"Supported time formats",id:"supported-time-formats",level:3},{value:"Related fields",id:"related-fields",level:2}],m={toc:p},s="wrapper";function u(e){let{components:t,...l}=e;return(0,n.kt)(s,(0,r.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Date Time")," field type is used to store both date and time values in a single field."),(0,n.kt)("h2",{id:"create-a-date-time-field"},"Create a date time field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"DateTime")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Configure ",(0,n.kt)("inlineCode",{parentName:"li"},"Date Format")),(0,n.kt)("li",{parentName:"ol"},"Configure ",(0,n.kt)("inlineCode",{parentName:"li"},"Time Format")),(0,n.kt)("li",{parentName:"ol"},"Configure default value (Optional)"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:a(32317).Z,width:"2876",height:"1494"})),(0,n.kt)("h3",{id:"supported-date-formats"},"Supported date formats"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Format"),(0,n.kt)("th",{parentName:"tr",align:null},"Example"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY-MM-DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023-09-22")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY/MM/DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023/09/22")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD-MM-YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22-09-2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM-DD-YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09-22-2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD/MM/YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22/09/2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM/DD/YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09/22/2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"DD MM YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"22 09 2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"MM DD YYYY"),(0,n.kt)("td",{parentName:"tr",align:null},"09 22 2023")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"YYYY MM DD"),(0,n.kt)("td",{parentName:"tr",align:null},"2023 09 22")))),(0,n.kt)("h3",{id:"supported-time-formats"},"Supported time formats"),(0,n.kt)("table",null,(0,n.kt)("thead",{parentName:"table"},(0,n.kt)("tr",{parentName:"thead"},(0,n.kt)("th",{parentName:"tr",align:null},"Format"),(0,n.kt)("th",{parentName:"tr",align:null},"Example"))),(0,n.kt)("tbody",{parentName:"table"},(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"HH:mm:ss"),(0,n.kt)("td",{parentName:"tr",align:null},"12:45:30")),(0,n.kt)("tr",{parentName:"tbody"},(0,n.kt)("td",{parentName:"tr",align:null},"HH:mm"),(0,n.kt)("td",{parentName:"tr",align:null},"14:20")))),(0,n.kt)("h2",{id:"related-fields"},"Related fields"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/date"},"Date")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/time"},"Time")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/date-time-based/duration"},"Duration"))))}u.isMDXComponent=!0},32317:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/datetime-b83c4ad4a6b314544003b8b721c323a2.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/df203c0f.9abfc930.js b/packages/noco-docs/dist/assets/js/df203c0f.9abfc930.js new file mode 100644 index 0000000000..1bcfe7c768 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/df203c0f.9abfc930.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9924],{615:(e,t,l)=>{l.r(t),l.d(t,{default:()=>d});var a=l(67294),n=l(86010),r=l(83699),c=l(23777),o=l(35463),s=l(23702),i=l(97325),u=l(66945),g=l(33647);function m(e){let{doc:t}=e;return a.createElement("article",{className:"margin-vert--lg"},a.createElement(r.Z,{to:t.permalink},a.createElement("h2",null,t.title)),t.description&&a.createElement("p",null,t.description))}function d(e){let{tag:t}=e;const l=function(){const{selectMessage:e}=(0,c.c)();return t=>e(t,(0,i.I)({id:"theme.docs.tagDocListPageTitle.nDocsTagged",description:'Pluralized label for "{count} docs tagged". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One doc tagged|{count} docs tagged"},{count:t}))}(),d=(0,i.I)({id:"theme.docs.tagDocListPageTitle",description:"The title of the page for a docs tag",message:'{nDocsTagged} with "{tagName}"'},{nDocsTagged:l(t.count),tagName:t.label});return a.createElement(o.FG,{className:(0,n.Z)(s.k.wrapper.docsPages,s.k.page.docsTagDocListPage)},a.createElement(o.d,{title:d}),a.createElement(g.Z,{tag:"doc_tag_doc_list"}),a.createElement(u.Z,null,a.createElement("div",{className:"container margin-vert--lg"},a.createElement("div",{className:"row"},a.createElement("main",{className:"col col--8 col--offset-2"},a.createElement("header",{className:"margin-bottom--xl"},a.createElement("h1",null,d),a.createElement(r.Z,{href:t.allTagsPath},a.createElement(i.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),a.createElement("section",{className:"margin-vert--lg"},t.items.map((e=>a.createElement(m,{key:e.id,doc:e})))))))))}},23777:(e,t,l)=>{l.d(t,{c:()=>i});var a=l(67294),n=l(39962);const r=["zero","one","two","few","many","other"];function c(e){return r.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function s(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),o}}),[e])}function i(){const e=s();return{selectMessage:(t,l)=>function(e,t,l){const a=e.split("|");if(1===a.length)return a[0];a.length>l.pluralForms.length&&console.error(`For locale=${l.locale}, a maximum of ${l.pluralForms.length} plural forms are expected (${l.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const n=l.select(t),r=l.pluralForms.indexOf(n);return a[Math.min(r,a.length-1)]}(l,t,e)}}}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/df59b4b5.91ec2734.js b/packages/noco-docs/dist/assets/js/df59b4b5.91ec2734.js new file mode 100644 index 0000000000..9b4dda0040 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/df59b4b5.91ec2734.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3914],{36756:e=>{e.exports=JSON.parse('{"label":"Single line text","permalink":"/tags/single-line-text","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/text-based/single-line-text","title":"Single line text","description":"This article explains how to create & work with a Single line text field.","permalink":"/fields/field-types/text-based/single-line-text"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e11b3e19.33ad4247.js b/packages/noco-docs/dist/assets/js/e11b3e19.33ad4247.js new file mode 100644 index 0000000000..efb2006699 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e11b3e19.33ad4247.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5650],{3905:(e,t,l)=>{l.d(t,{Zo:()=>d,kt:()=>b});var i=l(67294);function o(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function r(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,i)}return l}function n(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?r(Object(l),!0).forEach((function(t){o(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):r(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function a(e,t){if(null==e)return{};var l,i,o=function(e,t){if(null==e)return{};var l,i,o={},r=Object.keys(e);for(i=0;i<r.length;i++)l=r[i],t.indexOf(l)>=0||(o[l]=e[l]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)l=r[i],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(o[l]=e[l])}return o}var c=i.createContext({}),s=function(e){var t=i.useContext(c),l=t;return e&&(l="function"==typeof e?e(t):n(n({},t),e)),l},d=function(e){var t=s(e.components);return i.createElement(c.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var l=e.components,o=e.mdxType,r=e.originalType,c=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),p=s(l),u=o,b=p["".concat(c,".").concat(u)]||p[u]||f[u]||r;return l?i.createElement(b,n(n({ref:t},d),{},{components:l})):i.createElement(b,n({ref:t},d))}));function b(e,t){var l=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=l.length,n=new Array(r);n[0]=u;var a={};for(var c in t)hasOwnProperty.call(t,c)&&(a[c]=t[c]);a.originalType=e,a[p]="string"==typeof e?e:o,n[1]=a;for(var s=2;s<r;s++)n[s]=l[s];return i.createElement.apply(null,n)}return i.createElement.apply(null,l)}u.displayName="MDXCreateElement"},60920:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>f,frontMatter:()=>r,metadata:()=>a,toc:()=>s});var i=l(87462),o=(l(67294),l(3905));const r={title:"Checkbox",description:"This article explains how to create & work with a Checkbox field.",tags:["Fields","Field types","Custom types","Checkbox"],keywords:["Fields","Field types","Custom types","Checkbox","Create checkbox field"]},n=void 0,a={unversionedId:"fields/field-types/select-based/checkbox",id:"fields/field-types/select-based/checkbox",title:"Checkbox",description:"This article explains how to create & work with a Checkbox field.",source:"@site/docs/070.fields/040.field-types/030.select-based/020.checkbox.md",sourceDirName:"070.fields/040.field-types/030.select-based",slug:"/fields/field-types/select-based/checkbox",permalink:"/fields/field-types/select-based/checkbox",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/030.select-based/020.checkbox.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Checkbox",permalink:"/tags/checkbox"}],version:"current",sidebarPosition:20,frontMatter:{title:"Checkbox",description:"This article explains how to create & work with a Checkbox field.",tags:["Fields","Field types","Custom types","Checkbox"],keywords:["Fields","Field types","Custom types","Checkbox","Create checkbox field"]},sidebar:"tutorialSidebar",previous:{title:"Single Select",permalink:"/fields/field-types/select-based/single-select"},next:{title:"Multi Select",permalink:"/fields/field-types/select-based/multi-select"}},c={},s=[{value:"Create a checkbox field",id:"create-a-checkbox-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Supported icons",id:"supported-icons",level:3},{value:"Related fields",id:"related-fields",level:2}],d={toc:s},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,i.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The checkbox field type is used to store boolean values. It can be used to store a simple yes/no value, or true/false, or any other boolean value."),(0,o.kt)("h2",{id:"create-a-checkbox-field"},"Create a checkbox field"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,o.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,o.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select the field type as ",(0,o.kt)("inlineCode",{parentName:"li"},"Checkbox")," from the dropdown."),(0,o.kt)("li",{parentName:"ol"},"Select icon for the field; defaults to ",(0,o.kt)("inlineCode",{parentName:"li"},"check")," icon (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Select color for the field; defaults to ",(0,o.kt)("inlineCode",{parentName:"li"},"grey")," (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,o.kt)("li",{parentName:"ol"},"Click on ",(0,o.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"image",src:l(25409).Z,width:"2874",height:"1396"})),(0,o.kt)("h3",{id:"cell-display"},"Cell display"),(0,o.kt)("p",null,"Cell displays the icon in the color selected for the field. A true value will be represented by a checked icon or a filled icon",(0,o.kt)("br",{parentName:"p"}),"\n",(0,o.kt)("img",{alt:"image",src:l(54081).Z,width:"1268",height:"513"})),(0,o.kt)("h3",{id:"supported-icons"},"Supported icons"),(0,o.kt)("p",null,"NocoDB supports the following icons for the checkbox field type.",(0,o.kt)("br",{parentName:"p"}),"\n",(0,o.kt)("img",{alt:"image",src:l(43321).Z,width:"401",height:"479"})),(0,o.kt)("h2",{id:"related-fields"},"Related fields"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/fields/field-types/select-based/rating"},"Rating"))))}f.isMDXComponent=!0},54081:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/attachment-cell-display-d0e036b051275db64f5a516ad8c604b5.png"},43321:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/checkbox-icon-50a0b9c5edbae35ca181d433419c943c.png"},25409:(e,t,l)=>{l.d(t,{Z:()=>i});const i=l.p+"assets/images/checkbox-d62bbc732b50b8328ce528b7a9496cee.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e12d67b0.19f1f2d2.js b/packages/noco-docs/dist/assets/js/e12d67b0.19f1f2d2.js new file mode 100644 index 0000000000..fa625c820e --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e12d67b0.19f1f2d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9554],{61359:e=>{e.exports=JSON.parse('{"label":"Views","permalink":"/tags/views","allTagsPath":"/tags","count":9,"items":[{"id":"views/actions-on-view","title":"Actions on view","description":"Learn how to delete, rename, duplicate a a view in NocoDB.","permalink":"/views/actions-on-view"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"views/view-types/form","title":"Form","description":"Learn how to create, import, and manage forms in NocoDB.","permalink":"/views/view-types/form"},{"id":"views/view-types/gallery","title":"Gallery","description":"Learn how to work with gallery view in NocoDB.","permalink":"/views/view-types/gallery"},{"id":"views/view-types/grid","title":"Grid","description":"Learn how to work with grid view in NocoDB.","permalink":"/views/view-types/grid"},{"id":"views/view-types/kanban","title":"Kanban","description":"Learn how to work with kanban view in NocoDB.","permalink":"/views/view-types/kanban"},{"id":"collaboration/share-view","title":"Share view","description":"Procedures to share a view publicly","permalink":"/collaboration/share-view"},{"id":"views/share-view","title":"Share view","description":"Learn how to share a view publicly in NocoDB.","permalink":"/views/share-view"},{"id":"views/views-overview","title":"View overview","description":"Understanding Views in NocoDB!","permalink":"/views/views-overview"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e28b0c4f.752cc726.js b/packages/noco-docs/dist/assets/js/e28b0c4f.752cc726.js new file mode 100644 index 0000000000..ea5ff0ff89 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e28b0c4f.752cc726.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8880],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),d=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return r.createElement(c.Provider,{value:t},e.children)},s="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),s=d(n),g=o,m=s["".concat(c,".").concat(g)]||s[g]||u[g]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=g;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[s]="string"==typeof e?e:o,i[1]=l;for(var d=2;d<a;d++)i[d]=n[d];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}g.displayName="MDXCreateElement"},85216:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>d});var r=n(87462),o=(n(67294),n(3905));const a={title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!"},i=void 0,l={unversionedId:"getting-started/upgrading",id:"version-0.109.7/getting-started/upgrading",title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!",source:"@site/versioned_docs/version-0.109.7/020.getting-started/030.upgrading.md",sourceDirName:"020.getting-started",slug:"/getting-started/upgrading",permalink:"/0.109.7/getting-started/upgrading",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/020.getting-started/030.upgrading.md",tags:[],version:"0.109.7",sidebarPosition:30,frontMatter:{title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!"},sidebar:"tutorialSidebar",previous:{title:"Environment Variables",permalink:"/0.109.7/getting-started/environment-variables"},next:{title:"Demos",permalink:"/0.109.7/getting-started/demos"}},c={},d=[{value:"Docker",id:"docker",level:2},{value:"Find, Stop & Delete NocoDB Docker Container",id:"find-stop--delete-nocodb-docker-container",level:3},{value:"Find & Remove NocoDB Docker Image",id:"find--remove-nocodb-docker-image",level:3},{value:"Pull the latest NocoDB image with same environment variables",id:"pull-the-latest-nocodb-image-with-same-environment-variables",level:3},{value:"Example: Docker Upgrade",id:"example-docker-upgrade",level:3},{value:"Node",id:"node",level:2},{value:"Uninstall NocoDB package",id:"uninstall-nocodb-package",level:4},{value:"Install NocoDB package",id:"install-nocodb-package",level:4},{value:"Homebrew",id:"homebrew",level:2}],p={toc:d},s="wrapper";function u(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"By default, if ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_DB")," is not specified upon ",(0,o.kt)("a",{parentName:"p",href:"/0.109.7/getting-started/installation"},"installation"),", then SQLite will be used to store metadata. We suggest users to separate the metadata and user data in different databases as pictured in our ",(0,o.kt)("a",{parentName:"p",href:"/engineering/architecture"},"architecture"),". "),(0,o.kt)("h2",{id:"docker"},"Docker"),(0,o.kt)("h3",{id:"find-stop--delete-nocodb-docker-container"},"Find, Stop & Delete NocoDB Docker Container"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# find NocoDB container ID\ndocker ps\n# stop NocoDB container\ndocker stop <YOUR_CONTAINER_ID>\n# delete NocoDB container\ndocker rm <YOUR_CONTAINER_ID>\n")),(0,o.kt)("p",null,"Note: Deleting your docker container without setting ",(0,o.kt)("inlineCode",{parentName:"p"},"NC_DB")," or mounting to a persistent volume for a default SQLite database will result in losing your data. See examples below."),(0,o.kt)("h3",{id:"find--remove-nocodb-docker-image"},"Find & Remove NocoDB Docker Image"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# find NocoDB image\ndocker images\n# delete NocoDB image\ndocker rmi <YOUR_IMAGE_ID>\n")),(0,o.kt)("h3",{id:"pull-the-latest-nocodb-image-with-same-environment-variables"},"Pull the latest NocoDB image with same environment variables"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d -p 8080:8080 \\\n -e NC_DB="<YOUR_NC_DB_URL>" \\\n -e NC_AUTH_JWT_SECRET="<YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN>" \\\n nocodb/nocodb:latest\n')),(0,o.kt)("p",null,"Updating nocodb docker container is similar to updating ",(0,o.kt)("a",{parentName:"p",href:"https://www.whitesourcesoftware.com/free-developer-tools/blog/update-docker-images/"},"any other docker containers"),"."),(0,o.kt)("h3",{id:"example-docker-upgrade"},"Example: Docker Upgrade"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/5435402/133578984-53c6b96b-3e8b-4a96-b6c2-36f3c09ffdde.png",alt:"Screen Shot 2021-09-16 at 09 23 07"})),(0,o.kt)("h2",{id:"node"},"Node"),(0,o.kt)("p",null,"Updating docker container is similar to updating a npm package."),(0,o.kt)("p",null,"From your root folder "),(0,o.kt)("h4",{id:"uninstall-nocodb-package"},"Uninstall NocoDB package"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"npm uninstall nocodb\n")),(0,o.kt)("h4",{id:"install-nocodb-package"},"Install NocoDB package"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"npm install --save nocodb\n")),(0,o.kt)("h2",{id:"homebrew"},"Homebrew"),(0,o.kt)("p",null,"Run following commands to upgrade Homebrew Nocodb version."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"# Update the local homebrew formulas\nbrew update\n# Upgrade nocodb package\nbrew upgrade nocodb\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e302cfc9.d9580788.js b/packages/noco-docs/dist/assets/js/e302cfc9.d9580788.js new file mode 100644 index 0000000000..aea4662aec --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e302cfc9.d9580788.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1313],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var r=n.createContext({}),p=function(e){var t=n.useContext(r),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(r.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,l=e.originalType,r=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=p(a),u=i,h=m["".concat(r,".").concat(u)]||m[u]||d[u]||l;return a?n.createElement(h,s(s({ref:t},c),{},{components:a})):n.createElement(h,s({ref:t},c))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=a.length,s=new Array(l);s[0]=u;var o={};for(var r in t)hasOwnProperty.call(t,r)&&(o[r]=t[r]);o.originalType=e,o[m]="string"==typeof e?e:i,s[1]=o;for(var p=2;p<l;p++)s[p]=a[p];return n.createElement.apply(null,s)}return n.createElement.apply(null,a)}u.displayName="MDXCreateElement"},10847:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>r,contentTitle:()=>s,default:()=>b,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var n=a(87462),i=(a(67294),a(3905));const l={title:"Table details overview",description:"Table details overview",tags:["Table details","Table","Overview"],keywords:["table details","table overview","table"]},s=void 0,o={unversionedId:"table-details/table-details-overview",id:"table-details/table-details-overview",title:"Table details overview",description:"Table details overview",source:"@site/docs/065.table-details/table-details-overview.md",sourceDirName:"065.table-details",slug:"/table-details/table-details-overview",permalink:"/table-details/table-details-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/065.table-details/table-details-overview.md",tags:[{label:"Table details",permalink:"/tags/table-details"},{label:"Table",permalink:"/tags/table"},{label:"Overview",permalink:"/tags/overview"}],version:"current",frontMatter:{title:"Table details overview",description:"Table details overview",tags:["Table details","Table","Overview"],keywords:["table details","table overview","table"]},sidebar:"tutorialSidebar",previous:{title:"Download",permalink:"/table-operations/download"},next:{title:"Fields overview",permalink:"/fields/fields-overview"}},r={},p=[{value:"Fields",id:"fields",level:2},{value:"Relations",id:"relations",level:2},{value:"API Snippet",id:"api-snippet",level:2},{value:"Sample snippets",id:"sample-snippets",level:3},{value:"Supported Snippet",id:"supported-snippet",level:2},{value:"Shell",id:"shell",level:3},{value:"Javascript",id:"javascript",level:3},{value:"Node",id:"node",level:3},{value:"NocoDB SDK",id:"nocodb-sdk",level:3},{value:"PHP",id:"php",level:3},{value:"Python",id:"python",level:3},{value:"Ruby",id:"ruby",level:3},{value:"Java",id:"java",level:3},{value:"C",id:"c",level:3},{value:"Webhook",id:"webhook",level:2}],c=e=>function(t){return console.warn("Component "+e+" was not imported, exported, or provided by MDXProvider as global scope"),(0,i.kt)("div",t)},m=c("Tabs"),d=c("TabItem"),u={toc:p},h="wrapper";function b(e){let{components:t,...l}=e;return(0,i.kt)(h,(0,n.Z)({},u,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Table Details")," section houses various tools & utilities to manage & work with your table schema & data. This essentially is a place for 'Creators' to build & manage their tables quickly. ",(0,i.kt)("inlineCode",{parentName:"p"},"Details")," section is accessible using the ",(0,i.kt)("inlineCode",{parentName:"p"},"Data-Details")," toggle switcher in the top navbar. "),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(52243).Z,width:"2876",height:"208"})),(0,i.kt)("p",null,"This section is divided into 4 parts:"),(0,i.kt)("h2",{id:"fields"},"Fields"),(0,i.kt)("p",null,"Fields is a multi-field table schema editor that allows you to add, edit, delete and reorder fields quickly & easily from one place. Additional details about multi-field editor can be found ",(0,i.kt)("a",{parentName:"p",href:"/fields/multi-fields-editor"},"here")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(63955).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"relations"},"Relations"),(0,i.kt)("p",null,"Relations are vital for managing data connections in a database. In a complex schema, it's essential to have a clear understanding of these connections because they:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Maintain data accuracy."),(0,i.kt)("li",{parentName:"ol"},"Enhance query efficiency."),(0,i.kt)("li",{parentName:"ol"},"Aid in logical schema design."),(0,i.kt)("li",{parentName:"ol"},"Support data analysis."),(0,i.kt)("li",{parentName:"ol"},"Enable proper application development.")),(0,i.kt)("p",null,"Visualizing these relations through an Entity Relationship Diagram (ERD) simplifies their comprehension and management, especially as the database grows in complexity."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(29613).Z,width:"2880",height:"1800"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"You can drag drop the tables to rearrange them in the diagram. Note that, such reordering will not persist across sessions.")),(0,i.kt)("h2",{id:"api-snippet"},"API Snippet"),(0,i.kt)("p",null,"NocoDB provides programmatic access to your data via REST APIs. API snippets in NocoDB offer ready-made code examples in various programming languages, simplifying the process of integrating your data with external applications. These snippets save time and effort by providing a quick and easy reference for developers, enabling them to interact with your NocoDB database programmatically without the need to write code from scratch."),(0,i.kt)("p",null,"A quick snippet for different scripts & languages is listed in this section."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(30175).Z,width:"2880",height:"1800"})),(0,i.kt)("h3",{id:"sample-snippets"},"Sample snippets"),(0,i.kt)(m,{mdxType:"Tabs"},(0,i.kt)(d,{value:"Shell",label:"Shell",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"curl --request GET \\\n --url 'http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=' \\\n --header 'xc-auth: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU'\n"))),(0,i.kt)(d,{value:"Javascript",label:"Javascript",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"import axios from \"axios\";\n\nconst options = {\n method: 'GET',\n url: 'http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer',\n params: {offset: '0', limit: '25', where: ''},\n headers: {\n 'xc-auth': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU'\n }\n};\n\naxios.request(options).then(function (response) {\n console.log(response.data);\n}).catch(function (error) {\n console.error(error);\n});\n"))),(0,i.kt)(d,{value:"Node",label:"Node",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"var axios = require(\"axios\").default;\n\nvar options = {\n method: 'GET',\n url: 'http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer',\n params: {offset: '0', limit: '25', where: ''},\n headers: {\n 'xc-auth': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU'\n }\n};\n\naxios.request(options).then(function (response) {\n console.log(response.data);\n}).catch(function (error) {\n console.error(error);\n});\n"))),(0,i.kt)(d,{value:"NocoDB SDK",label:"NocoDB SDK",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'import { Api } from "nocodb-sdk";\nconst api = new Api({\n baseURL: "http://localhost:8080",\n headers: {\n "xc-auth": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU"\n }\n})\n\napi.dbViewRow.list(\n "noco",\n "ExternalDB",\n "Customer",\n "Customer", {\n "offset": 0,\n "limit": 25,\n "where": ""\n}).then(function (data) {\n console.log(data);\n}).catch(function (error) {\n console.error(error);\n});\n'))),(0,i.kt)(d,{value:"PHP",label:"PHP",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_PORT => "8080",\n CURLOPT_URL => "http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => "",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => "GET",\n CURLOPT_HTTPHEADER => [\n "xc-auth: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU"\n ],\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo "cURL Error #:" . $err;\n} else {\n echo $response;\n}\n'))),(0,i.kt)(d,{value:"Python",label:"Python",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'import http.client\n\nconn = http.client.HTTPConnection("localhost:8080")\n\nheaders = { \'xc-auth\': "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU" }\n\nconn.request("GET", "/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=", headers=headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode("utf-8"))\n'))),(0,i.kt)(d,{value:"Ruby",label:"Ruby",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"require 'uri'\nrequire 'net/http'\n\nurl = URI(\"http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=\")\n\nhttp = Net::HTTP.new(url.host, url.port)\n\nrequest = Net::HTTP::Get.new(url)\nrequest[\"xc-auth\"] = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU'\n\nresponse = http.request(request)\nputs response.read_body\n"))),(0,i.kt)(d,{value:"Java",label:"Java",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'HttpResponse<String> response = Unirest.get("http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=")\n .header("xc-auth", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU")\n .asString();\n'))),(0,i.kt)(d,{value:"C",label:"C",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'CURL *hnd = curl_easy_init();\n\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");\ncurl_easy_setopt(hnd, CURLOPT_URL, "http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=");\n\nstruct curl_slist *headers = NULL;\nheaders = curl_slist_append(headers, "xc-auth: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU");\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\n\nCURLcode ret = curl_easy_perform(hnd);\n')))),(0,i.kt)("h2",{id:"supported-snippet"},"Supported Snippet"),(0,i.kt)("h3",{id:"shell"},"Shell"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"cURL"),(0,i.kt)("li",{parentName:"ul"},"wget")),(0,i.kt)("h3",{id:"javascript"},"Javascript"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Axios"),(0,i.kt)("li",{parentName:"ul"},"Fetch"),(0,i.kt)("li",{parentName:"ul"},"jQuery"),(0,i.kt)("li",{parentName:"ul"},"XHR")),(0,i.kt)("h3",{id:"node"},"Node"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Axios"),(0,i.kt)("li",{parentName:"ul"},"Fetch"),(0,i.kt)("li",{parentName:"ul"},"Request"),(0,i.kt)("li",{parentName:"ul"},"Native"),(0,i.kt)("li",{parentName:"ul"},"Unirest")),(0,i.kt)("h3",{id:"nocodb-sdk"},"NocoDB SDK"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Javascript"),(0,i.kt)("li",{parentName:"ul"},"Node")),(0,i.kt)("h3",{id:"php"},"PHP"),(0,i.kt)("h3",{id:"python"},"Python"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"http.client"),(0,i.kt)("li",{parentName:"ul"},"request")),(0,i.kt)("h3",{id:"ruby"},"Ruby"),(0,i.kt)("h3",{id:"java"},"Java"),(0,i.kt)("h3",{id:"c"},"C"),(0,i.kt)("h2",{id:"webhook"},"Webhook"),(0,i.kt)("p",null,"Webhooks are essential for real-time communication and automation between NocoDB and external systems. They serve several crucial purposes:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Instant Notifications:")," Webhooks enable immediate notifications when there are changes in your NocoDB database. This real-time information can be crucial for timely responses to important events, such as new data entries, updates, or deletions.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Automation:")," They facilitate the automation of processes by triggering actions in external systems based on database events. For example, you can automate tasks like sending emails, updating spreadsheets, or syncing data with other applications in response to changes in NocoDB.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Integration:")," Webhooks allow you to seamlessly integrate NocoDB with other tools and services, enhancing the overall functionality of your database. This integration can streamline workflows, improve data consistency, and reduce manual data entry.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Bulk Operations:")," NocoDB's support for webhooks in bulk endpoints makes it efficient to handle multiple records simultaneously. This is especially useful when dealing with large datasets or when you need to perform batch operations in external systems."))),(0,i.kt)("p",null,"In summary, webhooks in NocoDB empower you to create dynamic, responsive, and interconnected workflows by keeping external systems in sync with your database's activities."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(30731).Z,width:"2880",height:"1800"})),(0,i.kt)("p",null,"Note that, Webhooks currently are specific for associated table. Additional procedural details about webhooks can be found ",(0,i.kt)("a",{parentName:"p",href:"/automation/webhook/webhook-overview"},"here")))}b.isMDXComponent=!0},30175:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/details-api-snippet-78906ef3b2248845b8955eed84a3031e.png"},63955:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/details-field-editor-6b80e39a53b09c20af27e53b9777ea9a.png"},29613:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/details-relations-0716794b3e749928f581e2a2f78931a3.png"},52243:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/details-tab-8aeca1f70ead223a641ead51b82e97f5.png"},30731:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/details-webhook-834a408cf5a6b9d711ac6ab63a1eaa4a.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e3120721.4cd01eb7.js b/packages/noco-docs/dist/assets/js/e3120721.4cd01eb7.js new file mode 100644 index 0000000000..0f792fd2bc --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e3120721.4cd01eb7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1120],{23388:e=>{e.exports=JSON.parse('{"label":"Filter","permalink":"/tags/filter","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/filter","title":"Filtering records","description":"Learn how to filter records in NocoDB.","permalink":"/table-operations/filter"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e4367861.d460a6d1.js b/packages/noco-docs/dist/assets/js/e4367861.d460a6d1.js new file mode 100644 index 0000000000..7effb21f25 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e4367861.d460a6d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6263],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>b});var l=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,l)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?n(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):n(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,l,i=function(e,t){if(null==e)return{};var a,l,i={},n=Object.keys(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(l=0;l<n.length;l++)a=n[l],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var p=l.createContext({}),d=function(e){var t=l.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},m=function(e){var t=d(e.components);return l.createElement(p.Provider,{value:t},e.children)},s="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var a=e.components,i=e.mdxType,n=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),s=d(a),u=i,b=s["".concat(p,".").concat(u)]||s[u]||c[u]||n;return a?l.createElement(b,r(r({ref:t},m),{},{components:a})):l.createElement(b,r({ref:t},m))}));function b(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=a.length,r=new Array(n);r[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o[s]="string"==typeof e?e:i,r[1]=o;for(var d=2;d<n;d++)r[d]=a[d];return l.createElement.apply(null,r)}return l.createElement.apply(null,a)}u.displayName="MDXCreateElement"},37634:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>n,metadata:()=>o,toc:()=>d});var l=a(87462),i=(a(67294),a(3905));const n={title:"Import data into an existing table",description:"Learn how to import data into an existing table in NocoDB.",tags:["Tables","Upload","CSV","Excel","JSON"],keywords:["NocoDB table","import data into table","import data from csv","import data from excel","import data from xlsx"]},r=void 0,o={unversionedId:"tables/import-data-into-existing-table",id:"tables/import-data-into-existing-table",title:"Import data into an existing table",description:"Learn how to import data into an existing table in NocoDB.",source:"@site/docs/050.tables/040.import-data-into-existing-table.md",sourceDirName:"050.tables",slug:"/tables/import-data-into-existing-table",permalink:"/tables/import-data-into-existing-table",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/050.tables/040.import-data-into-existing-table.md",tags:[{label:"Tables",permalink:"/tags/tables"},{label:"Upload",permalink:"/tags/upload"},{label:"CSV",permalink:"/tags/csv"},{label:"Excel",permalink:"/tags/excel"},{label:"JSON",permalink:"/tags/json"}],version:"current",sidebarPosition:40,frontMatter:{title:"Import data into an existing table",description:"Learn how to import data into an existing table in NocoDB.",tags:["Tables","Upload","CSV","Excel","JSON"],keywords:["NocoDB table","import data into table","import data from csv","import data from excel","import data from xlsx"]},sidebar:"tutorialSidebar",previous:{title:"Create table via import",permalink:"/tables/create-table-via-import"},next:{title:"Actions on table",permalink:"/tables/actions-on-table"}},p={},d=[{value:"Import data from CSV / Excel",id:"import-data-from-csv--excel",level:2},{value:"Accessing import modal",id:"accessing-import-modal",level:3},{value:"Importing file data",id:"importing-file-data",level:3},{value:"1. Upload from local directory",id:"1-upload-from-local-directory",level:4},{value:"2. Upload from URL",id:"2-upload-from-url",level:4},{value:"Field mapping",id:"field-mapping",level:3},{value:"Advance settings",id:"advance-settings",level:3},{value:"Related articles",id:"related-articles",level:2}],m={toc:d},s="wrapper";function c(e){let{components:t,...n}=e;return(0,i.kt)(s,(0,l.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"import-data-from-csv--excel"},"Import data from CSV / Excel"),(0,i.kt)("h3",{id:"accessing-import-modal"},"Accessing import modal"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"...")," context menu from the toolbar."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Upload")," button."),(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Upload CSV")," / ",(0,i.kt)("inlineCode",{parentName:"li"},"Upload Excel")," option. ")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(93541).Z,width:"2896",height:"940"})),(0,i.kt)("h3",{id:"importing-file-data"},"Importing file data"),(0,i.kt)("p",null,"There are two ways to upload source file:"),(0,i.kt)("h4",{id:"1-upload-from-local-directory"},"1. Upload from local directory"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"Upload")," tab from the Quick import modal."),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"file upload")," button or drag and drop file to the modal."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#advance-settings"},"Advance Settings")," (optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button. ")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(41445).Z,width:"2876",height:"1798"})),(0,i.kt)("h4",{id:"2-upload-from-url"},"2. Upload from URL"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Select ",(0,i.kt)("inlineCode",{parentName:"li"},"URL")," tab from the Quick import modal."),(0,i.kt)("li",{parentName:"ol"},"Paste the URL of the file."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#advance-settings"},"Advance Settings")," (optional)"),(0,i.kt)("li",{parentName:"ol"},"Click on ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button.")),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(98940).Z,width:"2876",height:"1796"})),(0,i.kt)("h3",{id:"field-mapping"},"Field mapping"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Table Name")," (Optional)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Defaults to the name of the file; double-click to edit."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Mapping Fields")," (Optional)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Existing field names are listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Source field"),", while new fields identified from the import file are listed under ",(0,i.kt)("inlineCode",{parentName:"li"},"Destination field"),"."),(0,i.kt)("li",{parentName:"ul"},"NocoDB automatically maps destination field names based on the source field names."),(0,i.kt)("li",{parentName:"ul"},"You can reconfigure the mapping by utilizing the dropdown menu that appears when you click on the destination field."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Exclude fields")," (Optional)"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"A checkbox is provided to exclude a field from being imported."))),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Initiate Import")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"Click on the ",(0,i.kt)("inlineCode",{parentName:"li"},"Import")," button to commence the file import process.")))),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"image",src:a(56138).Z,width:"2872",height:"1800"})),(0,i.kt)("h3",{id:"advance-settings"},"Advance settings"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"# of records to parse to infer datatype")," - defaults to 500 records."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Utilize First Record as Headers"),"**`: Enabled by default. If selected, the first record in the spreadsheet will be treated as the header record and its contents will be used as field names.")),(0,i.kt)("h2",{id:"related-articles"},"Related articles"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/create-table"},"Create a new table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/create-table-via-import"},"Create a table using a CSV, Excel or a JSON")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#rename-table"},"Rename a table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#duplicate-table"},"Duplicate a table")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"/tables/actions-on-table#delete-table"},"Delete a table"))))}c.isMDXComponent=!0},93541:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/upload-csv-1-5060880a942894e2cf7d72a27b048520.png"},41445:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/upload-csv-2-8d2bf537b779871fcd91d482507b6ec2.png"},56138:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/upload-csv-3-2b437b676c7ea55dfc099c630c62bc32.png"},98940:(e,t,a)=>{a.d(t,{Z:()=>l});const l=a.p+"assets/images/upload-csv-url-e91498d1e314587238b1379f73bee6b1.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e4e12989.d9cb26c6.js b/packages/noco-docs/dist/assets/js/e4e12989.d9cb26c6.js new file mode 100644 index 0000000000..8beea459a3 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e4e12989.d9cb26c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[8e3],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>k});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(n),m=i,k=u["".concat(l,".").concat(m)]||u[m]||d[m]||r;return n?a.createElement(k,o(o({ref:t},c),{},{components:n})):a.createElement(k,o({ref:t},c))}));function k(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:i,o[1]=s;for(var p=2;p<r;p++)o[p]=n[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},86301:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var a=n(87462),i=(n(67294),n(3905));const r={title:"Writing Unit Tests",description:"Overview to Unit Testing"},o=void 0,s={unversionedId:"engineering/unit-testing",id:"version-0.109.7/engineering/unit-testing",title:"Writing Unit Tests",description:"Overview to Unit Testing",source:"@site/versioned_docs/version-0.109.7/050.engineering/040.unit-testing.md",sourceDirName:"050.engineering",slug:"/engineering/unit-testing",permalink:"/0.109.7/engineering/unit-testing",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/050.engineering/040.unit-testing.md",tags:[],version:"0.109.7",sidebarPosition:40,frontMatter:{title:"Writing Unit Tests",description:"Overview to Unit Testing"},sidebar:"tutorialSidebar",previous:{title:"Development Setup",permalink:"/0.109.7/engineering/development-setup"},next:{title:"Playwright E2E Testing",permalink:"/0.109.7/engineering/playwright"}},l={},p=[{value:"Unit Tests",id:"unit-tests",level:2},{value:"Pre-requisites",id:"pre-requisites",level:3},{value:"Setup",id:"setup",level:3},{value:"Run Tests",id:"run-tests",level:3},{value:"Folder Structure",id:"folder-structure",level:3},{value:"Factory Pattern",id:"factory-pattern",level:3},{value:"Walk through of writing a Unit Test",id:"walk-through-of-writing-a-unit-test",level:3},{value:"Configure test",id:"configure-test",level:4},{value:"Test case",id:"test-case",level:4},{value:"Integrating the New Test Suite",id:"integrating-the-new-test-suite",level:4},{value:"Seeding Sample DB (Sakila)",id:"seeding-sample-db-sakila",level:3}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"unit-tests"},"Unit Tests"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"All individual unit tests are independent of each other. We don't use any shared state between tests."),(0,i.kt)("li",{parentName:"ul"},"Test environment includes ",(0,i.kt)("inlineCode",{parentName:"li"},"sakila")," sample database and any change to it by a test is reverted before running other tests."),(0,i.kt)("li",{parentName:"ul"},"While running unit tests, it tries to connect to mysql server running on ",(0,i.kt)("inlineCode",{parentName:"li"},"localhost:3306")," with username ",(0,i.kt)("inlineCode",{parentName:"li"},"root")," and password ",(0,i.kt)("inlineCode",{parentName:"li"},"password")," (which can be configured) and if not found, it will use ",(0,i.kt)("inlineCode",{parentName:"li"},"sqlite")," as a fallback, hence no requirement of any sql server to run tests.")),(0,i.kt)("h3",{id:"pre-requisites"},"Pre-requisites"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"MySQL is preferred - however tests can fallback on SQLite too")),(0,i.kt)("h3",{id:"setup"},"Setup"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cd packages/nocodb\n\nnpm install\n\n# add a .env file\ncp tests/unit/.env.sample tests/unit/.env\n\n# open .env file\nopen tests/unit/.env\n")),(0,i.kt)("p",null,"Configure the following variables"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"DB_HOST : host\nDB_PORT : port\nDB_USER : username\nDB_PASSWORD : password")),(0,i.kt)("h3",{id:"run-tests"},"Run Tests"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"npm run test:unit\n")),(0,i.kt)("h3",{id:"folder-structure"},"Folder Structure"),(0,i.kt)("p",null,"The root folder for unit tests is ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"rest")," folder contains all the test suites for rest apis."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"model")," folder contains all the test suites for models."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"factory")," folder contains all the helper functions to create test data."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"init")," folder contains helper functions to configure test environment."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"index.test.ts")," is the root test suite file which imports all the test suites."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"TestDbMngr.ts")," is a helper class to manage test databases (i.e. creating, dropping, etc.).")),(0,i.kt)("h3",{id:"factory-pattern"},"Factory Pattern"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Use factories for create/update/delete data. No data should be directly create/updated/deleted in the test."),(0,i.kt)("li",{parentName:"ul"},"While writing a factory make sure that it can be used with as less parameters as possible and use default values for other parameters."),(0,i.kt)("li",{parentName:"ul"},"Use named parameters for factories.",(0,i.kt)("pre",{parentName:"li"},(0,i.kt)("code",{parentName:"pre",className:"language-ts"},"createUser({ email, password})\n"))),(0,i.kt)("li",{parentName:"ul"},"Use one file per factory.")),(0,i.kt)("h3",{id:"walk-through-of-writing-a-unit-test"},"Walk through of writing a Unit Test"),(0,i.kt)("p",null,"We will create an ",(0,i.kt)("inlineCode",{parentName:"p"},"Table")," test suite as an example."),(0,i.kt)("h4",{id:"configure-test"},"Configure test"),(0,i.kt)("p",null,"We will configure ",(0,i.kt)("inlineCode",{parentName:"p"},"beforeEach")," which is called before each test is executed. We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"init")," function from ",(0,i.kt)("inlineCode",{parentName:"p"},"nocodb/packages/nocodb/tests/unit/init/index.ts"),", which is a helper function which configures the test environment(i.e resetting state, etc.)."),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"init")," does the following things -"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"It initializes a ",(0,i.kt)("inlineCode",{parentName:"li"},"Noco")," instance(reused in all tests)."),(0,i.kt)("li",{parentName:"ul"},"Restores ",(0,i.kt)("inlineCode",{parentName:"li"},"meta")," and ",(0,i.kt)("inlineCode",{parentName:"li"},"sakila")," database to its initial state."),(0,i.kt)("li",{parentName:"ul"},"Creates the root user."),(0,i.kt)("li",{parentName:"ul"},"Returns ",(0,i.kt)("inlineCode",{parentName:"li"},"context")," which has ",(0,i.kt)("inlineCode",{parentName:"li"},"auth token")," for the created user, node server instance(",(0,i.kt)("inlineCode",{parentName:"li"},"app"),"), and ",(0,i.kt)("inlineCode",{parentName:"li"},"dbConfig"),".")),(0,i.kt)("p",null,"We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"createProject")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"createProject")," factories to create a project and a table."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"let context;\n\nbeforeEach(async function () {\n context = await init();\n\n project = await createProject(context);\n table = await createTable(context, project);\n});\n")),(0,i.kt)("h4",{id:"test-case"},"Test case"),(0,i.kt)("p",null,"We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"it")," function to create a test case. We will use ",(0,i.kt)("inlineCode",{parentName:"p"},"supertest")," to make a request to the server. We use ",(0,i.kt)("inlineCode",{parentName:"p"},"expect"),"(",(0,i.kt)("inlineCode",{parentName:"p"},"chai"),") to assert the response."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"it('Get table list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/meta/projects/${project.id}/tables`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list).to.be.an('array').not.empty;\n});\n")),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"We can also run individual test by using ",(0,i.kt)("inlineCode",{parentName:"p"},".only")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"describe")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"it")," function and the running the test command.")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"it.only('Get table list', async () => {\n")),(0,i.kt)("h4",{id:"integrating-the-new-test-suite"},"Integrating the New Test Suite"),(0,i.kt)("p",null,"We create a new file ",(0,i.kt)("inlineCode",{parentName:"p"},"table.test.ts")," in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/rest/tests")," directory."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"import 'mocha';\nimport request from 'supertest';\nimport init from '../../init';\nimport { createTable, getAllTables } from '../../factory/table';\nimport { createProject } from '../../factory/project';\nimport { defaultColumns } from '../../factory/column';\nimport Model from '../../../../src/lib/models/Model';\nimport { expect } from 'chai';\n\nfunction tableTest() {\n let context;\n let project;\n let table;\n\n beforeEach(async function () {\n context = await init();\n\n project = await createProject(context);\n table = await createTable(context, project);\n });\n\n it('Get table list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/meta/projects/${project.id}/tables`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list).to.be.an('array').not.empty;\n });\n}\n\nexport default function () {\n describe('Table', tableTests);\n}\n")),(0,i.kt)("p",null,"We can then import the ",(0,i.kt)("inlineCode",{parentName:"p"},"Table")," test suite to ",(0,i.kt)("inlineCode",{parentName:"p"},"Rest")," test suite in ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/rest/index.test.ts")," file(",(0,i.kt)("inlineCode",{parentName:"p"},"Rest")," test suite is imported in the root test suite file which is ",(0,i.kt)("inlineCode",{parentName:"p"},"packages/nocodb/tests/unit/index.test.ts"),")."),(0,i.kt)("h3",{id:"seeding-sample-db-sakila"},"Seeding Sample DB (Sakila)"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-typescript"},"\nfunction tableTest() {\n let context;\n let sakilaProject: Project;\n let customerTable: Model;\n\n beforeEach(async function () {\n context = await init();\n \n /******* Start : Seeding sample database **********/\n sakilaProject = await createSakilaProject(context);\n /******* End : Seeding sample database **********/\n \n customerTable = await getTable({project: sakilaProject, name: 'customer'})\n });\n\n it('Get table data list', async function () {\n const response = await request(context.app)\n .get(`/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}`)\n .set('xc-auth', context.token)\n .send({})\n .expect(200);\n\n expect(response.body.list[0]['FirstName']).to.equal('MARY');\n });\n}\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e55064b4.f6b45318.js b/packages/noco-docs/dist/assets/js/e55064b4.f6b45318.js new file mode 100644 index 0000000000..efc2858db2 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e55064b4.f6b45318.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4341],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>g});var n=a(67294);function l(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?r(Object(a),!0).forEach((function(e){l(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function p(t,e){if(null==t)return{};var a,n,l=function(t,e){if(null==t)return{};var a,n,l={},r=Object.keys(t);for(n=0;n<r.length;n++)a=r[n],e.indexOf(a)>=0||(l[a]=t[a]);return l}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n<r.length;n++)a=r[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(l[a]=t[a])}return l}var d=n.createContext({}),m=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},u=function(t){var e=m(t.components);return n.createElement(d.Provider,{value:e},t.children)},k="mdxType",N={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},o=n.forwardRef((function(t,e){var a=t.components,l=t.mdxType,r=t.originalType,d=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),k=m(a),o=l,g=k["".concat(d,".").concat(o)]||k[o]||N[o]||r;return a?n.createElement(g,i(i({ref:e},u),{},{components:a})):n.createElement(g,i({ref:e},u))}));function g(t,e){var a=arguments,l=e&&e.mdxType;if("string"==typeof t||l){var r=a.length,i=new Array(r);i[0]=o;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p[k]="string"==typeof t?t:l,i[1]=p;for(var m=2;m<r;m++)i[m]=a[m];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}o.displayName="MDXCreateElement"},73412:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>N,frontMatter:()=>r,metadata:()=>p,toc:()=>m});var n=a(87462),l=(a(67294),a(3905));const r={title:"Currency",description:"This article explains how to create & work with a Currency field.",tags:["Fields","Field types","Numerical types","Currency"],keywords:["Fields","Field types","Numerical types","Currency","Create currency field"]},i=void 0,p={unversionedId:"fields/field-types/numerical/currency",id:"fields/field-types/numerical/currency",title:"Currency",description:"This article explains how to create & work with a Currency field.",source:"@site/docs/070.fields/040.field-types/020.numerical/040.currency.md",sourceDirName:"070.fields/040.field-types/020.numerical",slug:"/fields/field-types/numerical/currency",permalink:"/fields/field-types/numerical/currency",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/020.numerical/040.currency.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Numerical types",permalink:"/tags/numerical-types"},{label:"Currency",permalink:"/tags/currency"}],version:"current",sidebarPosition:40,frontMatter:{title:"Currency",description:"This article explains how to create & work with a Currency field.",tags:["Fields","Field types","Numerical types","Currency"],keywords:["Fields","Field types","Numerical types","Currency","Create currency field"]},sidebar:"tutorialSidebar",previous:{title:"Percent",permalink:"/fields/field-types/numerical/percent"},next:{title:"Single Select",permalink:"/fields/field-types/select-based/single-select"}},d={},m=[{value:"Create field",id:"create-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Supported locales",id:"supported-locales",level:3},{value:"Supported currencies",id:"supported-currencies",level:3},{value:"Similar numerical fields",id:"similar-numerical-fields",level:2}],u={toc:m},k="wrapper";function N(t){let{components:e,...r}=t;return(0,l.kt)(k,(0,n.Z)({},u,r,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Currency")," field type is used to store currency values. It is a numerical field with additional provision to set the currency symbol in display."),(0,l.kt)("h2",{id:"create-field"},"Create field"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,l.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,l.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,l.kt)("li",{parentName:"ol"},"Select the field type as ",(0,l.kt)("inlineCode",{parentName:"li"},"Currency")," from the dropdown."),(0,l.kt)("li",{parentName:"ol"},"Configure ",(0,l.kt)("inlineCode",{parentName:"li"},"Currency Locale")," : defaults to ",(0,l.kt)("inlineCode",{parentName:"li"},"en-US")),(0,l.kt)("li",{parentName:"ol"},"Configure ",(0,l.kt)("inlineCode",{parentName:"li"},"Currency Symbol")," : defaults to ",(0,l.kt)("inlineCode",{parentName:"li"},"$")),(0,l.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,l.kt)("li",{parentName:"ol"},"Click on ",(0,l.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(65357).Z,width:"2876",height:"1360"})),(0,l.kt)("h3",{id:"cell-display"},"Cell display"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"image",src:a(36616).Z,width:"1087",height:"523"})),(0,l.kt)("h3",{id:"supported-locales"},"Supported locales"),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.npmjs.com/package/locale-codes#locale-list"},"https://www.npmjs.com/package/locale-codes#locale-list")),(0,l.kt)("admonition",{type:"note"},(0,l.kt)("p",{parentName:"admonition"},"NocoDB adheres to ISO639-1 standard for locale codes.")),(0,l.kt)("h3",{id:"supported-currencies"},"Supported currencies"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null}),(0,l.kt)("th",{parentName:"tr",align:null}),(0,l.kt)("th",{parentName:"tr",align:null}),(0,l.kt)("th",{parentName:"tr",align:null}),(0,l.kt)("th",{parentName:"tr",align:null}),(0,l.kt)("th",{parentName:"tr",align:null}))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"AED"),(0,l.kt)("td",{parentName:"tr",align:null},"AFN"),(0,l.kt)("td",{parentName:"tr",align:null},"ALL"),(0,l.kt)("td",{parentName:"tr",align:null},"AMD"),(0,l.kt)("td",{parentName:"tr",align:null},"ANG"),(0,l.kt)("td",{parentName:"tr",align:null},"AOA")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ARS"),(0,l.kt)("td",{parentName:"tr",align:null},"AUD"),(0,l.kt)("td",{parentName:"tr",align:null},"AWG"),(0,l.kt)("td",{parentName:"tr",align:null},"AZN"),(0,l.kt)("td",{parentName:"tr",align:null},"BAM"),(0,l.kt)("td",{parentName:"tr",align:null},"BBD")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"BDT"),(0,l.kt)("td",{parentName:"tr",align:null},"BGN"),(0,l.kt)("td",{parentName:"tr",align:null},"BHD"),(0,l.kt)("td",{parentName:"tr",align:null},"BIF"),(0,l.kt)("td",{parentName:"tr",align:null},"BMD"),(0,l.kt)("td",{parentName:"tr",align:null},"BND")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"BOB"),(0,l.kt)("td",{parentName:"tr",align:null},"BOV"),(0,l.kt)("td",{parentName:"tr",align:null},"BRL"),(0,l.kt)("td",{parentName:"tr",align:null},"BSD"),(0,l.kt)("td",{parentName:"tr",align:null},"BTN"),(0,l.kt)("td",{parentName:"tr",align:null},"BWP")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"BYR"),(0,l.kt)("td",{parentName:"tr",align:null},"BZD"),(0,l.kt)("td",{parentName:"tr",align:null},"CAD"),(0,l.kt)("td",{parentName:"tr",align:null},"CDF"),(0,l.kt)("td",{parentName:"tr",align:null},"CHE"),(0,l.kt)("td",{parentName:"tr",align:null},"CHF")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"CHW"),(0,l.kt)("td",{parentName:"tr",align:null},"CLF"),(0,l.kt)("td",{parentName:"tr",align:null},"CLP"),(0,l.kt)("td",{parentName:"tr",align:null},"CNY"),(0,l.kt)("td",{parentName:"tr",align:null},"COP"),(0,l.kt)("td",{parentName:"tr",align:null},"COU")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"CRC"),(0,l.kt)("td",{parentName:"tr",align:null},"CUP"),(0,l.kt)("td",{parentName:"tr",align:null},"CVE"),(0,l.kt)("td",{parentName:"tr",align:null},"CYP"),(0,l.kt)("td",{parentName:"tr",align:null},"CZK"),(0,l.kt)("td",{parentName:"tr",align:null},"DJF")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"DKK"),(0,l.kt)("td",{parentName:"tr",align:null},"DOP"),(0,l.kt)("td",{parentName:"tr",align:null},"DZD"),(0,l.kt)("td",{parentName:"tr",align:null},"EEK"),(0,l.kt)("td",{parentName:"tr",align:null},"EGP"),(0,l.kt)("td",{parentName:"tr",align:null},"ERN")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ETB"),(0,l.kt)("td",{parentName:"tr",align:null},"EUR"),(0,l.kt)("td",{parentName:"tr",align:null},"FJD"),(0,l.kt)("td",{parentName:"tr",align:null},"FKP"),(0,l.kt)("td",{parentName:"tr",align:null},"GBP"),(0,l.kt)("td",{parentName:"tr",align:null},"GEL")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"GHC"),(0,l.kt)("td",{parentName:"tr",align:null},"GIP"),(0,l.kt)("td",{parentName:"tr",align:null},"GMD"),(0,l.kt)("td",{parentName:"tr",align:null},"GNF"),(0,l.kt)("td",{parentName:"tr",align:null},"GTQ"),(0,l.kt)("td",{parentName:"tr",align:null},"GYD")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"HKD"),(0,l.kt)("td",{parentName:"tr",align:null},"HNL"),(0,l.kt)("td",{parentName:"tr",align:null},"HRK"),(0,l.kt)("td",{parentName:"tr",align:null},"HTG"),(0,l.kt)("td",{parentName:"tr",align:null},"HUF"),(0,l.kt)("td",{parentName:"tr",align:null},"IDR")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ILS"),(0,l.kt)("td",{parentName:"tr",align:null},"INR"),(0,l.kt)("td",{parentName:"tr",align:null},"IQD"),(0,l.kt)("td",{parentName:"tr",align:null},"IRR"),(0,l.kt)("td",{parentName:"tr",align:null},"ISK"),(0,l.kt)("td",{parentName:"tr",align:null},"JMD")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"JOD"),(0,l.kt)("td",{parentName:"tr",align:null},"JPY"),(0,l.kt)("td",{parentName:"tr",align:null},"KES"),(0,l.kt)("td",{parentName:"tr",align:null},"KGS"),(0,l.kt)("td",{parentName:"tr",align:null},"KHR"),(0,l.kt)("td",{parentName:"tr",align:null},"KMF")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"KPW"),(0,l.kt)("td",{parentName:"tr",align:null},"KRW"),(0,l.kt)("td",{parentName:"tr",align:null},"KWD"),(0,l.kt)("td",{parentName:"tr",align:null},"KYD"),(0,l.kt)("td",{parentName:"tr",align:null},"KZT"),(0,l.kt)("td",{parentName:"tr",align:null},"LAK")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"LBP"),(0,l.kt)("td",{parentName:"tr",align:null},"LKR"),(0,l.kt)("td",{parentName:"tr",align:null},"LRD"),(0,l.kt)("td",{parentName:"tr",align:null},"LSL"),(0,l.kt)("td",{parentName:"tr",align:null},"LTL"),(0,l.kt)("td",{parentName:"tr",align:null},"LVL")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"LYD"),(0,l.kt)("td",{parentName:"tr",align:null},"MAD"),(0,l.kt)("td",{parentName:"tr",align:null},"MDL"),(0,l.kt)("td",{parentName:"tr",align:null},"MGA"),(0,l.kt)("td",{parentName:"tr",align:null},"MKD"),(0,l.kt)("td",{parentName:"tr",align:null},"MMK")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"MNT"),(0,l.kt)("td",{parentName:"tr",align:null},"MOP"),(0,l.kt)("td",{parentName:"tr",align:null},"MRO"),(0,l.kt)("td",{parentName:"tr",align:null},"MTL"),(0,l.kt)("td",{parentName:"tr",align:null},"MUR"),(0,l.kt)("td",{parentName:"tr",align:null},"MVR")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"MWK"),(0,l.kt)("td",{parentName:"tr",align:null},"MXN"),(0,l.kt)("td",{parentName:"tr",align:null},"MXV"),(0,l.kt)("td",{parentName:"tr",align:null},"MYR"),(0,l.kt)("td",{parentName:"tr",align:null},"MZN"),(0,l.kt)("td",{parentName:"tr",align:null},"NAD")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"NGN"),(0,l.kt)("td",{parentName:"tr",align:null},"NIO"),(0,l.kt)("td",{parentName:"tr",align:null},"NOK"),(0,l.kt)("td",{parentName:"tr",align:null},"NPR"),(0,l.kt)("td",{parentName:"tr",align:null},"NZD"),(0,l.kt)("td",{parentName:"tr",align:null},"OMR")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"PAB"),(0,l.kt)("td",{parentName:"tr",align:null},"PEN"),(0,l.kt)("td",{parentName:"tr",align:null},"PGK"),(0,l.kt)("td",{parentName:"tr",align:null},"PHP"),(0,l.kt)("td",{parentName:"tr",align:null},"PKR"),(0,l.kt)("td",{parentName:"tr",align:null},"PLN")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"PYG"),(0,l.kt)("td",{parentName:"tr",align:null},"QAR"),(0,l.kt)("td",{parentName:"tr",align:null},"ROL"),(0,l.kt)("td",{parentName:"tr",align:null},"RON"),(0,l.kt)("td",{parentName:"tr",align:null},"RSD"),(0,l.kt)("td",{parentName:"tr",align:null},"RUB")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"RWF"),(0,l.kt)("td",{parentName:"tr",align:null},"SAR"),(0,l.kt)("td",{parentName:"tr",align:null},"SBD"),(0,l.kt)("td",{parentName:"tr",align:null},"SCR"),(0,l.kt)("td",{parentName:"tr",align:null},"SDD"),(0,l.kt)("td",{parentName:"tr",align:null},"SEK")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"SGD"),(0,l.kt)("td",{parentName:"tr",align:null},"SHP"),(0,l.kt)("td",{parentName:"tr",align:null},"SIT"),(0,l.kt)("td",{parentName:"tr",align:null},"SKK"),(0,l.kt)("td",{parentName:"tr",align:null},"SLL"),(0,l.kt)("td",{parentName:"tr",align:null},"SOS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"SRD"),(0,l.kt)("td",{parentName:"tr",align:null},"STD"),(0,l.kt)("td",{parentName:"tr",align:null},"SYP"),(0,l.kt)("td",{parentName:"tr",align:null},"SZL"),(0,l.kt)("td",{parentName:"tr",align:null},"THB"),(0,l.kt)("td",{parentName:"tr",align:null},"TJS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"TMM"),(0,l.kt)("td",{parentName:"tr",align:null},"TND"),(0,l.kt)("td",{parentName:"tr",align:null},"TOP"),(0,l.kt)("td",{parentName:"tr",align:null},"TRY"),(0,l.kt)("td",{parentName:"tr",align:null},"TTD"),(0,l.kt)("td",{parentName:"tr",align:null},"TWD")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"TZS"),(0,l.kt)("td",{parentName:"tr",align:null},"UAH"),(0,l.kt)("td",{parentName:"tr",align:null},"UGX"),(0,l.kt)("td",{parentName:"tr",align:null},"USD"),(0,l.kt)("td",{parentName:"tr",align:null},"USN"),(0,l.kt)("td",{parentName:"tr",align:null},"USS")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"UYU"),(0,l.kt)("td",{parentName:"tr",align:null},"UZS"),(0,l.kt)("td",{parentName:"tr",align:null},"VEB"),(0,l.kt)("td",{parentName:"tr",align:null},"VND"),(0,l.kt)("td",{parentName:"tr",align:null},"VUV"),(0,l.kt)("td",{parentName:"tr",align:null},"WST")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"XAF"),(0,l.kt)("td",{parentName:"tr",align:null},"XAG"),(0,l.kt)("td",{parentName:"tr",align:null},"XAU"),(0,l.kt)("td",{parentName:"tr",align:null},"XBA"),(0,l.kt)("td",{parentName:"tr",align:null},"XBB"),(0,l.kt)("td",{parentName:"tr",align:null},"XBC")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"XBD"),(0,l.kt)("td",{parentName:"tr",align:null},"XCD"),(0,l.kt)("td",{parentName:"tr",align:null},"XDR"),(0,l.kt)("td",{parentName:"tr",align:null},"XFO"),(0,l.kt)("td",{parentName:"tr",align:null},"XFU"),(0,l.kt)("td",{parentName:"tr",align:null},"XOF")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"XPD"),(0,l.kt)("td",{parentName:"tr",align:null},"XPF"),(0,l.kt)("td",{parentName:"tr",align:null},"XPT"),(0,l.kt)("td",{parentName:"tr",align:null},"XTS"),(0,l.kt)("td",{parentName:"tr",align:null},"XXX"),(0,l.kt)("td",{parentName:"tr",align:null},"YER")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ZAR"),(0,l.kt)("td",{parentName:"tr",align:null},"ZMK"),(0,l.kt)("td",{parentName:"tr",align:null},"ZWD"),(0,l.kt)("td",{parentName:"tr",align:null}),(0,l.kt)("td",{parentName:"tr",align:null}),(0,l.kt)("td",{parentName:"tr",align:null})))),(0,l.kt)("h2",{id:"similar-numerical-fields"},"Similar numerical fields"),(0,l.kt)("p",null,"Following are the other numerical fields available in NocoDB, with some custom add-on features."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/number"},"Number")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/decimal"},"Decimal")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/percent"},"Percent"))))}N.isMDXComponent=!0},36616:(t,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/currency-cell-display-d3e0309151ff2bb7cc72a48861a565bd.png"},65357:(t,e,a)=>{a.d(e,{Z:()=>n});const n=a.p+"assets/images/currency-97e11fde0e86cf5aa78c6e3117bd9ee8.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e56fdc78.daaabb90.js b/packages/noco-docs/dist/assets/js/e56fdc78.daaabb90.js new file mode 100644 index 0000000000..73f1fd043d --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e56fdc78.daaabb90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9069],{3905:(e,n,o)=>{o.d(n,{Zo:()=>s,kt:()=>g});var a=o(67294);function t(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,a)}return o}function d(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(n){t(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))}))}return e}function c(e,n){if(null==e)return{};var o,a,t=function(e,n){if(null==e)return{};var o,a,t={},r=Object.keys(e);for(a=0;a<r.length;a++)o=r[a],n.indexOf(o)>=0||(t[o]=e[o]);return t}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)o=r[a],n.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(t[o]=e[o])}return t}var l=a.createContext({}),i=function(e){var n=a.useContext(l),o=n;return e&&(o="function"==typeof e?e(n):d(d({},n),e)),o},s=function(e){var n=i(e.components);return a.createElement(l.Provider,{value:n},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},b=a.forwardRef((function(e,n){var o=e.components,t=e.mdxType,r=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),p=i(o),b=t,g=p["".concat(l,".").concat(b)]||p[b]||u[b]||r;return o?a.createElement(g,d(d({ref:n},s),{},{components:o})):a.createElement(g,d({ref:n},s))}));function g(e,n){var o=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var r=o.length,d=new Array(r);d[0]=b;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c[p]="string"==typeof e?e:t,d[1]=c;for(var i=2;i<r;i++)d[i]=o[i];return a.createElement.apply(null,d)}return a.createElement.apply(null,o)}b.displayName="MDXCreateElement"},89e3:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>u,frontMatter:()=>r,metadata:()=>c,toc:()=>i});var a=o(87462),t=(o(67294),o(3905));const r={title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!",tags:["Open Source"],keywords:["NocoDB upgrade","upgrade NocoDB","upgrade nocodb"]},d=void 0,c={unversionedId:"getting-started/self-hosted/upgrading",id:"getting-started/self-hosted/upgrading",title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!",source:"@site/docs/020.getting-started/050.self-hosted/030.upgrading.md",sourceDirName:"020.getting-started/050.self-hosted",slug:"/getting-started/self-hosted/upgrading",permalink:"/getting-started/self-hosted/upgrading",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/020.getting-started/050.self-hosted/030.upgrading.md",tags:[{label:"Open Source",permalink:"/tags/open-source"}],version:"current",sidebarPosition:30,frontMatter:{title:"Upgrading",description:"Upgrading NocoDB : Docker, Node and Homebrew!",tags:["Open Source"],keywords:["NocoDB upgrade","upgrade NocoDB","upgrade nocodb"]},sidebar:"tutorialSidebar",previous:{title:"Environment variables",permalink:"/getting-started/self-hosted/environment-variables"},next:{title:"Workspace overview",permalink:"/workspaces/workspace-overview"}},l={},i=[{value:"Docker",id:"docker",level:2},{value:"Find, Stop & Delete NocoDB Docker Container",id:"find-stop--delete-nocodb-docker-container",level:3},{value:"Find & Remove NocoDB Docker Image",id:"find--remove-nocodb-docker-image",level:3},{value:"Pull the latest NocoDB image with same environment variables",id:"pull-the-latest-nocodb-image-with-same-environment-variables",level:3},{value:"Example: Docker Upgrade",id:"example-docker-upgrade",level:3},{value:"Node",id:"node",level:2},{value:"Uninstall NocoDB package",id:"uninstall-nocodb-package",level:4},{value:"Install NocoDB package",id:"install-nocodb-package",level:4},{value:"Homebrew",id:"homebrew",level:2}],s={toc:i},p="wrapper";function u(e){let{components:n,...o}=e;return(0,t.kt)(p,(0,a.Z)({},s,o,{components:n,mdxType:"MDXLayout"}),(0,t.kt)("p",null,"By default, if ",(0,t.kt)("inlineCode",{parentName:"p"},"NC_DB")," is not specified upon ",(0,t.kt)("a",{parentName:"p",href:"/getting-started/self-hosted/installation"},"installation"),", then SQLite will be used to store metadata. We suggest users to separate the metadata and user data in different databases as pictured in our ",(0,t.kt)("a",{parentName:"p",href:"/engineering/architecture"},"architecture"),". "),(0,t.kt)("h2",{id:"docker"},"Docker"),(0,t.kt)("h3",{id:"find-stop--delete-nocodb-docker-container"},"Find, Stop & Delete NocoDB Docker Container"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},"# find NocoDB container ID\ndocker ps\n# stop NocoDB container\ndocker stop <YOUR_CONTAINER_ID>\n# delete NocoDB container\ndocker rm <YOUR_CONTAINER_ID>\n")),(0,t.kt)("p",null,"Note: Deleting your docker container without setting ",(0,t.kt)("inlineCode",{parentName:"p"},"NC_DB")," or mounting to a persistent volume for a default SQLite database will result in losing your data. See examples below."),(0,t.kt)("h3",{id:"find--remove-nocodb-docker-image"},"Find & Remove NocoDB Docker Image"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},"# find NocoDB image\ndocker images\n# delete NocoDB image\ndocker rmi <YOUR_IMAGE_ID>\n")),(0,t.kt)("h3",{id:"pull-the-latest-nocodb-image-with-same-environment-variables"},"Pull the latest NocoDB image with same environment variables"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d -p 8080:8080 \\\n -e NC_DB="<YOUR_NC_DB_URL>" \\\n -e NC_AUTH_JWT_SECRET="<YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN>" \\\n nocodb/nocodb:latest\n')),(0,t.kt)("p",null,"Updating NocoDB docker container is similar to updating ",(0,t.kt)("a",{parentName:"p",href:"https://www.whitesourcesoftware.com/free-developer-tools/blog/update-docker-images/"},"any other docker containers"),"."),(0,t.kt)("h3",{id:"example-docker-upgrade"},"Example: Docker Upgrade"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},'# Previous docker run\n#\nterminal % docker run -d --name myNocoDB \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="pg://host.docker.internal:5432?u=postgres&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:0.111.0\nUnable to find image \'nocodb/nocodb:0.111.0\' locally\n0.111.0: Pulling from nocodb/nocodb\nad3fa0ea069c: Pull complete \ne43b9156e769: Pull complete \nc1bee0da1504: Pull complete \nadf78ab024d9: Pull complete \ncd8000d2c16a: Pull complete \nDigest: sha256:93b6e1ba2c0b90a26b205f9c7d44053aa6d8fa037eff9eb4155ca017f6c9bed4\nStatus: Downloaded newer image for nocodb/nocodb:0.111.0\nafdc8edd1005c93e1df8f90d02e46430ea7b5c5610a2bf9ba105238d6c4d927b\n\n\n# Find, stop and delete NocoDB docker container\n#\nterminal % docker ps\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nafdc8edd1005 nocodb/nocodb:0.111.0 "/usr/bin/dumb-init \u2026" 18 seconds ago Up 18 seconds 0.0.0.0:8080->8080/tcp myNocoDB\n0202041b3607 postgres:14.7 "docker-entrypoint.s\u2026" 2 days ago Up 8 hours (healthy) 0.0.0.0:5432->5432/tcp scripts_pg147_1\n\nterminal % docker stop afdc8edd1005\nafdc8edd1005\n\nterminal % docker rm afdc8edd1005\nafdc8edd1005\n\n\n# Find and remove NocoDB docker image\n#\nterminal % docker images\nREPOSITORY TAG IMAGE ID CREATED SIZE\nnocodb/nocodb 0.111.0 34609411e87c 5 weeks ago 132MB\nmysql 8.0 6a0560a40914 7 weeks ago 599MB\npostgres 14.7 2075a95c7b3b 4 months ago 358MB\n\nterminal % docker rmi 34609411e87c\nUntagged: nocodb/nocodb:0.111.0\nUntagged: nocodb/nocodb@sha256:93b6e1ba2c0b90a26b205f9c7d44053aa6d8fa037eff9eb4155ca017f6c9bed4\nDeleted: sha256:3bfxxxx38e682742cbxxxx535b3503af45e931fb9bd15f46eca7d33cf4c54d72\nDeleted: sha256:952152b5da42ae057c6688a04xxxx72e1a2f91825956f5c7e35f91d5b285d4d8\nDeleted: sha256:3155197577xxxx673675ed1bce761714a24d7803f70a905740f7d4c248cxxxxx\n\n\n# Pull & run the latest NocoDB image with same environment variables as before\n#\nterminal % docker run -d --name myNocoDB \\\n-v "$(pwd)"/nocodb:/usr/app/data/ \\\n-p 8080:8080 \\\n-e NC_DB="pg://host.docker.internal:5432?u=postgres&p=password&d=d1" \\\n-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \\\nnocodb/nocodb:latest\nUnable to find image \'nocodb/nocodb:latest\' locally\nlatest: Pulling from nocodb/nocodb\nad3fa0ea069c: Pull complete \ne43b9156e769: Pull complete \nc1bee0da1504: Pull complete \nadf78ab024d9: Pull complete \n28ce4fc94e48: Pull complete \nDigest: sha256:5c6df5ff0eb1278e1dbfe684af630a743ca73dfec8c30cab3bae9c1d0d640287\nStatus: Downloaded newer image for nocodb/nocodb:latest\nae793a04b75f2f3ee78abbaef09891396a884ec83320151a266326195649a058\n\n\n')),(0,t.kt)("h2",{id:"node"},"Node"),(0,t.kt)("p",null,"Updating docker container is similar to updating a npm package."),(0,t.kt)("p",null,"From your root folder "),(0,t.kt)("h4",{id:"uninstall-nocodb-package"},"Uninstall NocoDB package"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},"npm uninstall nocodb\n")),(0,t.kt)("h4",{id:"install-nocodb-package"},"Install NocoDB package"),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},"npm install --save nocodb\n")),(0,t.kt)("h2",{id:"homebrew"},"Homebrew"),(0,t.kt)("p",null,"Run following commands to upgrade Homebrew Nocodb version."),(0,t.kt)("pre",null,(0,t.kt)("code",{parentName:"pre",className:"language-bash"},"# Update the local homebrew formulas\nbrew update\n# Upgrade nocodb package\nbrew upgrade nocodb\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e5a54c1b.6ee5594a.js b/packages/noco-docs/dist/assets/js/e5a54c1b.6ee5594a.js new file mode 100644 index 0000000000..e311065a06 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e5a54c1b.6ee5594a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7283],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},l=Object.keys(e);for(i=0;i<l.length;i++)r=l[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)r=l[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),c=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(r),m=n,f=d["".concat(s,".").concat(m)]||d[m]||u[m]||l;return r?i.createElement(f,a(a({ref:t},p),{},{components:r})):i.createElement(f,a({ref:t},p))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,a=new Array(l);a[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:n,a[1]=o;for(var c=2;c<l;c++)a[c]=r[c];return i.createElement.apply(null,a)}return i.createElement.apply(null,r)}m.displayName="MDXCreateElement"},39110:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var i=r(87462),n=(r(67294),r(3905));const l={title:"Number",description:"This article explains how to create & work with a Number field.",tags:["Fields","Field types","Numerical types","Number"],keywords:["Fields","Field types","Numerical types","Number","Create number field"]},a=void 0,o={unversionedId:"fields/field-types/numerical/number",id:"fields/field-types/numerical/number",title:"Number",description:"This article explains how to create & work with a Number field.",source:"@site/docs/070.fields/040.field-types/020.numerical/010.number.md",sourceDirName:"070.fields/040.field-types/020.numerical",slug:"/fields/field-types/numerical/number",permalink:"/fields/field-types/numerical/number",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/020.numerical/010.number.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Numerical types",permalink:"/tags/numerical-types"},{label:"Number",permalink:"/tags/number"}],version:"current",sidebarPosition:10,frontMatter:{title:"Number",description:"This article explains how to create & work with a Number field.",tags:["Fields","Field types","Numerical types","Number"],keywords:["Fields","Field types","Numerical types","Number","Create number field"]},sidebar:"tutorialSidebar",previous:{title:"URL",permalink:"/fields/field-types/text-based/url"},next:{title:"Decimal",permalink:"/fields/field-types/numerical/decimal"}},s={},c=[{value:"Create a number field",id:"create-a-number-field",level:2},{value:"Similar numerical fields",id:"similar-numerical-fields",level:2}],p={toc:c},d="wrapper";function u(e){let{components:t,...l}=e;return(0,n.kt)(d,(0,i.Z)({},p,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,(0,n.kt)("inlineCode",{parentName:"p"},"Number")," field type is used to store numerical values. Use cases include storing ",(0,n.kt)("inlineCode",{parentName:"p"},"age"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"salary"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"price"),", ",(0,n.kt)("inlineCode",{parentName:"p"},"quantity"),", etc."),(0,n.kt)("h2",{id:"create-a-number-field"},"Create a number field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,n.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,n.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Select the field type as ",(0,n.kt)("inlineCode",{parentName:"li"},"Number")," from the dropdown."),(0,n.kt)("li",{parentName:"ol"},"Set default value for the field (Optional)."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"image",src:r(28180).Z,width:"2876",height:"1178"})),(0,n.kt)("admonition",{type:"info"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"This field type can hold both positive and negative numbers."),(0,n.kt)("li",{parentName:"ul"},"Supported range (JavaScript): -9007199254740991 to 9007199254740991"))),(0,n.kt)("h2",{id:"similar-numerical-fields"},"Similar numerical fields"),(0,n.kt)("p",null,"Following are the other numerical fields available in NocoDB, with some custom add-on features."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/decimal"},"Decimal")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/percent"},"Percent")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"/fields/field-types/numerical/currency"},"Currency"))))}u.isMDXComponent=!0},28180:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/number-a3e4b9f394fc28d0cd3a7dc2297d608f.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e631982f.bf2deaa3.js b/packages/noco-docs/dist/assets/js/e631982f.bf2deaa3.js new file mode 100644 index 0000000000..42fda60dd9 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e631982f.bf2deaa3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5055],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var d=n.createContext({}),s=function(e){var t=n.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=s(e.components);return n.createElement(d.Provider,{value:t},e.children)},l="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,d=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),l=s(r),m=o,f=l["".concat(d,".").concat(m)]||l[m]||u[m]||a;return r?n.createElement(f,i(i({ref:t},p),{},{components:r})):n.createElement(f,i({ref:t},p))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var d in t)hasOwnProperty.call(t,d)&&(c[d]=t[d]);c.originalType=e,c[l]="string"==typeof e?e:o,i[1]=c;for(var s=2;s<a;s++)i[s]=r[s];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}m.displayName="MDXCreateElement"},12957:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>s});var n=r(87462),o=(r(67294),r(3905));const a={title:"Expanded Form",description:"NocoDB provides Expanded Form to let you edit your data easily"},i=void 0,c={unversionedId:"setup-and-usages/expanded-form",id:"version-0.109.7/setup-and-usages/expanded-form",title:"Expanded Form",description:"NocoDB provides Expanded Form to let you edit your data easily",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/190.expanded-form.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/expanded-form",permalink:"/0.109.7/setup-and-usages/expanded-form",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/190.expanded-form.md",tags:[],version:"0.109.7",sidebarPosition:190,frontMatter:{title:"Expanded Form",description:"NocoDB provides Expanded Form to let you edit your data easily"},sidebar:"tutorialSidebar",previous:{title:"Languages",permalink:"/0.109.7/setup-and-usages/languages"},next:{title:"Import Airtable to NocoDB",permalink:"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free"}},d={},s=[{value:"Overview",id:"overview",level:2},{value:"Expanding a Record",id:"expanding-a-record",level:2},{value:"Activity Feed",id:"activity-feed",level:2},{value:"Copy Record URL",id:"copy-record-url",level:2},{value:"Save Button Option",id:"save-button-option",level:2}],p={toc:s},l="wrapper";function u(e){let{components:t,...r}=e;return(0,o.kt)(l,(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"overview"},"Overview"),(0,o.kt)("p",null,"Expanded Form allows you to edit a row data in a form. It also shows the activity feed such as user comments or revision history. It can be also shared by others by copying the record URL."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203273340-987b1242-9c78-4195-9ca2-3d3c49c7bccf.png",alt:"image"})),(0,o.kt)("h2",{id:"expanding-a-record"},"Expanding a Record"),(0,o.kt)("p",null,"In a grid view, we can hover a row record and a doulbe arrow will be shown. By clicking it, the expanded form will be opened."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203274054-d20dc12b-7da8-4e6b-a144-19859b3c1c9c.png",alt:"image"})),(0,o.kt)("p",null,"Alternatively, we can highlight a cell and press the space bar. The expanded form for the correpsonding row will be opened."),(0,o.kt)("h2",{id:"activity-feed"},"Activity Feed"),(0,o.kt)("p",null,"In an expanded form, we can click ",(0,o.kt)("inlineCode",{parentName:"p"},"Toggle Comment View")," button to show the activity feed where we can optionally filter out comments only."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203275800-c8bc93f1-2a99-4766-8b81-70208c5675ca.png",alt:"image"})),(0,o.kt)("h2",{id:"copy-record-url"},"Copy Record URL"),(0,o.kt)("p",null,"In an expanded form, we can click ",(0,o.kt)("inlineCode",{parentName:"p"},"Copy Record URL")," to share the record form to other authorized users."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203276149-bc97c70a-8bbf-48b4-a3fb-dd437c9405d3.png",alt:"image"})),(0,o.kt)("h2",{id:"save-button-option"},"Save Button Option"),(0,o.kt)("p",null,"By default, when we save the form, the expanded form will be closed, i.e. ",(0,o.kt)("inlineCode",{parentName:"p"},"Save & Exit"),". However, if we prefer not to close the form even after saving, we can choose ",(0,o.kt)("inlineCode",{parentName:"p"},"Save & Stay")," mode instead. This is useful when you are editing a long form and you want to save it from time to time."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/203276349-5d5c68d6-4523-41ae-8e23-312d2f6e9caa.png",alt:"image"})))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e68614dc.3109c382.js b/packages/noco-docs/dist/assets/js/e68614dc.3109c382.js new file mode 100644 index 0000000000..50f8605be5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e68614dc.3109c382.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[771],{3905:(e,t,l)=>{l.d(t,{Zo:()=>c,kt:()=>u});var n=l(67294);function a(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function i(e,t){var l=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),l.push.apply(l,n)}return l}function o(e){for(var t=1;t<arguments.length;t++){var l=null!=arguments[t]?arguments[t]:{};t%2?i(Object(l),!0).forEach((function(t){a(e,t,l[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(l)):i(Object(l)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(l,t))}))}return e}function r(e,t){if(null==e)return{};var l,n,a=function(e,t){if(null==e)return{};var l,n,a={},i=Object.keys(e);for(n=0;n<i.length;n++)l=i[n],t.indexOf(l)>=0||(a[l]=e[l]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)l=i[n],t.indexOf(l)>=0||Object.prototype.propertyIsEnumerable.call(e,l)&&(a[l]=e[l])}return a}var d=n.createContext({}),p=function(e){var t=n.useContext(d),l=t;return e&&(l="function"==typeof e?e(t):o(o({},t),e)),l},c=function(e){var t=p(e.components);return n.createElement(d.Provider,{value:t},e.children)},s="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var l=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),s=p(l),f=a,u=s["".concat(d,".").concat(f)]||s[f]||m[f]||i;return l?n.createElement(u,o(o({ref:t},c),{},{components:l})):n.createElement(u,o({ref:t},c))}));function u(e,t){var l=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=l.length,o=new Array(i);o[0]=f;var r={};for(var d in t)hasOwnProperty.call(t,d)&&(r[d]=t[d]);r.originalType=e,r[s]="string"==typeof e?e:a,o[1]=r;for(var p=2;p<i;p++)o[p]=l[p];return n.createElement.apply(null,o)}return n.createElement.apply(null,l)}f.displayName="MDXCreateElement"},19809:(e,t,l)=>{l.r(t),l.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>p});var n=l(87462),a=(l(67294),l(3905));const i={title:"Attachment",description:"This article explains how to create & work with an Attachment field.",tags:["Fields","Field types","Custom types","Attachment"],keywords:["Fields","Field types","Custom types","Attachment","Create attachment field"]},o=void 0,r={unversionedId:"fields/field-types/custom-types/attachment",id:"fields/field-types/custom-types/attachment",title:"Attachment",description:"This article explains how to create & work with an Attachment field.",source:"@site/docs/070.fields/040.field-types/050.custom-types/010.attachment.md",sourceDirName:"070.fields/040.field-types/050.custom-types",slug:"/fields/field-types/custom-types/attachment",permalink:"/fields/field-types/custom-types/attachment",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/040.field-types/050.custom-types/010.attachment.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Field types",permalink:"/tags/field-types"},{label:"Custom types",permalink:"/tags/custom-types"},{label:"Attachment",permalink:"/tags/attachment"}],version:"current",sidebarPosition:10,frontMatter:{title:"Attachment",description:"This article explains how to create & work with an Attachment field.",tags:["Fields","Field types","Custom types","Attachment"],keywords:["Fields","Field types","Custom types","Attachment","Create attachment field"]},sidebar:"tutorialSidebar",previous:{title:"Rollup",permalink:"/fields/field-types/links-based/rollup"},next:{title:"QR code",permalink:"/fields/field-types/custom-types/QR-code"}},d={},p=[{value:"Create an Attachment field",id:"create-an-attachment-field",level:2},{value:"Cell display",id:"cell-display",level:3},{value:"Upload files",id:"upload-files",level:3},{value:"Expand modal",id:"expand-modal",level:2},{value:"Attach file(s)",id:"attach-files",level:3},{value:"Delete file",id:"delete-file",level:3},{value:"Download file",id:"download-file",level:3},{value:"Bulk Download file(s)",id:"bulk-download-files",level:3},{value:"Rename file",id:"rename-file",level:3}],c={toc:p},s="wrapper";function m(e){let{components:t,...i}=e;return(0,a.kt)(s,(0,n.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," fields allow you to upload files to your records. You can upload any file type, and the file will be linked to the record. You can also upload multiple files to a single ",(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," field record."),(0,a.kt)("h2",{id:"create-an-attachment-field"},"Create an Attachment field"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"+")," icon to the right of ",(0,a.kt)("inlineCode",{parentName:"li"},"Fields header")),(0,a.kt)("li",{parentName:"ol"},"On the dropdown modal, enter the field name (Optional)."),(0,a.kt)("li",{parentName:"ol"},"Select the field type as ",(0,a.kt)("inlineCode",{parentName:"li"},"Attachment")," from the dropdown."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:l(18290).Z,width:"2878",height:"1110"})),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"Max size for an attachment file is currently limited to 5 MB")),(0,a.kt)("h3",{id:"cell-display"},"Cell display"),(0,a.kt)("p",null,"The cell display for ",(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," field is either a clickable preview if file is an image in recognizable format or a file-type icon.",(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("img",{alt:"image",src:l(14684).Z,width:"1266",height:"687"})),(0,a.kt)("h3",{id:"upload-files"},"Upload files"),(0,a.kt)("p",null,"To upload files to an ",(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," field, "),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on the ",(0,a.kt)("inlineCode",{parentName:"li"},"+")," icon in the cell, choose the file to upload and click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Upload")," button. OR"),(0,a.kt)("li",{parentName:"ul"},"Drag drop the file to the cell. OR"),(0,a.kt)("li",{parentName:"ul"},"Click on expand icon ",(0,a.kt)("inlineCode",{parentName:"li"},"<>"),", choose the file to upload or drag-drop file; click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Upload")," button.")),(0,a.kt)("h2",{id:"expand-modal"},"Expand modal"),(0,a.kt)("p",null,"Expand modal for ",(0,a.kt)("inlineCode",{parentName:"p"},"Attachment")," field displays the list of files uploaded to the field. You can also upload files from the expand modal. To access expand modal, click on the expand icon ",(0,a.kt)("inlineCode",{parentName:"p"},"<>")," in the cell."),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:l(94577).Z,width:"1527",height:"638"})),(0,a.kt)("p",null,"Expand modal supports the following actions:"),(0,a.kt)("h3",{id:"attach-files"},"Attach file(s)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Attach file(s)")," button <1>"),(0,a.kt)("li",{parentName:"ul"},"Choose the file(s) to upload")),(0,a.kt)("h3",{id:"delete-file"},"Delete file"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"x")," icon <2> to the top left of the image card to delete the file")),(0,a.kt)("h3",{id:"download-file"},"Download file"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Download")," button <5> to download the file")),(0,a.kt)("h3",{id:"bulk-download-files"},"Bulk Download file(s)"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Select the files by clicking on the checkbox <3> to the top left of the image card"),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Bulk Download")," button <4> to download the selected files")),(0,a.kt)("h3",{id:"rename-file"},"Rename file"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Rename")," button <5> to rename the file"),(0,a.kt)("li",{parentName:"ul"},"Enter the new name in the input field"),(0,a.kt)("li",{parentName:"ul"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Rename")," button to save the new name")),(0,a.kt)("admonition",{type:"note"},(0,a.kt)("p",{parentName:"admonition"},"Rename file only renames the file in NocoDB display (expand record & tool tip on hover). It does not rename the file in the storage.")))}m.isMDXComponent=!0},14684:(e,t,l)=>{l.d(t,{Z:()=>n});const n=l.p+"assets/images/attachment-cell-63aeff518251334ef9ebdd018c752b1b.png"},94577:(e,t,l)=>{l.d(t,{Z:()=>n});const n=l.p+"assets/images/attachment-expand-bf0a44f3b002a3efa120b55211ac4d3c.png"},18290:(e,t,l)=>{l.d(t,{Z:()=>n});const n=l.p+"assets/images/attachment-68efc9fbeb85c49731a9d441cd90bda8.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e68e0fff.ebde1054.js b/packages/noco-docs/dist/assets/js/e68e0fff.ebde1054.js new file mode 100644 index 0000000000..3c31086330 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e68e0fff.ebde1054.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6859],{27048:e=>{e.exports=JSON.parse('{"label":"Cover image","permalink":"/tags/cover-image","allTagsPath":"/tags","count":1,"items":[{"id":"table-operations/field-operations","title":"Hide & reorder fields","description":"Learn how to hide and reorder fields in NocoDB.","permalink":"/table-operations/field-operations"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/e8cbe097.45e6f0b3.js b/packages/noco-docs/dist/assets/js/e8cbe097.45e6f0b3.js new file mode 100644 index 0000000000..55aff80adf --- /dev/null +++ b/packages/noco-docs/dist/assets/js/e8cbe097.45e6f0b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1635],{73637:e=>{e.exports=JSON.parse('{"label":"Field types","permalink":"/tags/field-types","allTagsPath":"/tags","count":32,"items":[{"id":"fields/field-types/custom-types/attachment","title":"Attachment","description":"This article explains how to create & work with an Attachment field.","permalink":"/fields/field-types/custom-types/attachment"},{"id":"fields/field-types/custom-types/barcode","title":"Barcode","description":"This article explains how to create & work with a Barcode field.","permalink":"/fields/field-types/custom-types/barcode"},{"id":"fields/field-types/select-based/checkbox","title":"Checkbox","description":"This article explains how to create & work with a Checkbox field.","permalink":"/fields/field-types/select-based/checkbox"},{"id":"fields/field-types/formula/conditional-expressions","title":"Conditional expressions","description":"This article explains various conditional expressions that can be used in formula fields.","permalink":"/fields/field-types/formula/conditional-expressions"},{"id":"fields/field-types/numerical/currency","title":"Currency","description":"This article explains how to create & work with a Currency field.","permalink":"/fields/field-types/numerical/currency"},{"id":"fields/field-types/date-time-based/date","title":"Date","description":"This article explains how to create & work with a Date field.","permalink":"/fields/field-types/date-time-based/date"},{"id":"fields/field-types/formula/date-functions","title":"Date functions","description":"This article explains various date functions that can be used in formula fields.","permalink":"/fields/field-types/formula/date-functions"},{"id":"fields/field-types/date-time-based/date-time","title":"Date Time","description":"This article explains how to create & work with a Date Time field.","permalink":"/fields/field-types/date-time-based/date-time"},{"id":"fields/field-types/numerical/decimal","title":"Decimal","description":"This article explains how to create & work with a Decimal field.","permalink":"/fields/field-types/numerical/decimal"},{"id":"fields/field-types/date-time-based/duration","title":"Duration","description":"This article explains how to create & work with a Duration field.","permalink":"/fields/field-types/date-time-based/duration"},{"id":"fields/field-types/text-based/email","title":"Email","description":"This article explains how to create & work with an Email field.","permalink":"/fields/field-types/text-based/email"},{"id":"fields/field-types/formula/formula","title":"Formula","description":"This article explains how to create & work with a Formula field.","permalink":"/fields/field-types/formula/formula"},{"id":"fields/field-types/custom-types/geometry","title":"Geometry","description":"This article explains how to create & work with a Geometry field.","permalink":"/fields/field-types/custom-types/geometry"},{"id":"fields/field-types/custom-types/json","title":"JSON","description":"JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.","permalink":"/fields/field-types/custom-types/json"},{"id":"fields/field-types/links-based/links","title":"Links","description":"This article explains how to create & work with a Links field.","permalink":"/fields/field-types/links-based/links"},{"id":"fields/field-types/text-based/long-text","title":"Long text","description":"This article explains how to create & work with a Long text field.","permalink":"/fields/field-types/text-based/long-text"},{"id":"fields/field-types/links-based/lookup","title":"Lookup","description":"This article explains how to create & work with a Lookup field.","permalink":"/fields/field-types/links-based/lookup"},{"id":"fields/field-types/select-based/multi-select","title":"Multi Select","description":"This article explains how to create & work with a Multi select field.","permalink":"/fields/field-types/select-based/multi-select"},{"id":"fields/field-types/numerical/number","title":"Number","description":"This article explains how to create & work with a Number field.","permalink":"/fields/field-types/numerical/number"},{"id":"fields/field-types/formula/operators","title":"Numeric and Logical Operators","description":"This article explains various numeric and logical operators that can be used in formula fields.","permalink":"/fields/field-types/formula/operators"},{"id":"fields/field-types/formula/numeric-functions","title":"Numeric functions","description":"This article explains various numeric functions that can be used in formula fields.","permalink":"/fields/field-types/formula/numeric-functions"},{"id":"fields/field-types/numerical/percent","title":"Percent","description":"This article explains how to create & work with a Percent field.","permalink":"/fields/field-types/numerical/percent"},{"id":"fields/field-types/text-based/phonenumber","title":"Phone Number","description":"This article explains how to create & work with a Phone number field.","permalink":"/fields/field-types/text-based/phonenumber"},{"id":"fields/field-types/custom-types/QR-code","title":"QR code","description":"This article explains how to create & work with a QR code field.","permalink":"/fields/field-types/custom-types/QR-code"},{"id":"fields/field-types/select-based/rating","title":"Rating","description":"This article explains how to create & work with a Rating field.","permalink":"/fields/field-types/select-based/rating"},{"id":"fields/field-types/links-based/rollup","title":"Rollup","description":"This article explains how to create & work with a Rollup field.","permalink":"/fields/field-types/links-based/rollup"},{"id":"fields/field-types/text-based/single-line-text","title":"Single line text","description":"This article explains how to create & work with a Single line text field.","permalink":"/fields/field-types/text-based/single-line-text"},{"id":"fields/field-types/select-based/single-select","title":"Single Select","description":"This article explains how to create & work with a Single select field.","permalink":"/fields/field-types/select-based/single-select"},{"id":"fields/field-types/custom-types/specific-db-type","title":"Specific DB type","description":"This article explains how to create & work with a Specific DB Type field.","permalink":"/fields/field-types/custom-types/specific-db-type"},{"id":"fields/field-types/formula/string-functions","title":"String functions","description":"This article explains various string functions that can be used in formula fields.","permalink":"/fields/field-types/formula/string-functions"},{"id":"fields/field-types/date-time-based/time","title":"Time","description":"This article explains how to create & work with a Time field.","permalink":"/fields/field-types/date-time-based/time"},{"id":"fields/field-types/text-based/url","title":"URL","description":"This article explains how to create & work with an URL field.","permalink":"/fields/field-types/text-based/url"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/eb689018.eabcc4dd.js b/packages/noco-docs/dist/assets/js/eb689018.eabcc4dd.js new file mode 100644 index 0000000000..5b75200538 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/eb689018.eabcc4dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[4851],{3905:(e,a,t)=>{t.d(a,{Zo:()=>b,kt:()=>h});var s=t(67294);function r(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function n(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);a&&(s=s.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,s)}return t}function o(e){for(var a=1;a<arguments.length;a++){var t=null!=arguments[a]?arguments[a]:{};a%2?n(Object(t),!0).forEach((function(a){r(e,a,t[a])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):n(Object(t)).forEach((function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a))}))}return e}function i(e,a){if(null==e)return{};var t,s,r=function(e,a){if(null==e)return{};var t,s,r={},n=Object.keys(e);for(s=0;s<n.length;s++)t=n[s],a.indexOf(t)>=0||(r[t]=e[t]);return r}(e,a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(s=0;s<n.length;s++)t=n[s],a.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=s.createContext({}),c=function(e){var a=s.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):o(o({},a),e)),t},b=function(e){var a=c(e.components);return s.createElement(l.Provider,{value:a},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var a=e.children;return s.createElement(s.Fragment,{},a)}},m=s.forwardRef((function(e,a){var t=e.components,r=e.mdxType,n=e.originalType,l=e.parentName,b=i(e,["components","mdxType","originalType","parentName"]),p=c(t),m=r,h=p["".concat(l,".").concat(m)]||p[m]||d[m]||n;return t?s.createElement(h,o(o({ref:a},b),{},{components:t})):s.createElement(h,o({ref:a},b))}));function h(e,a){var t=arguments,r=a&&a.mdxType;if("string"==typeof e||r){var n=t.length,o=new Array(n);o[0]=m;var i={};for(var l in a)hasOwnProperty.call(a,l)&&(i[l]=a[l]);i.originalType=e,i[p]="string"==typeof e?e:r,o[1]=i;for(var c=2;c<n;c++)o[c]=t[c];return s.createElement.apply(null,o)}return s.createElement.apply(null,t)}m.displayName="MDXCreateElement"},91431:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>n,metadata:()=>i,toc:()=>c});var s=t(87462),r=(t(67294),t(3905));const n={title:"Base overview",description:"This article explains the concept of bases in NocoDB.",tags:["Bases","Overview","Dashboard"],keywords:["NocoDB base","base overview","base dashboard","base collaboration","base actions","delete base","base management","base administration","base settings","base organization"]},o=void 0,i={unversionedId:"bases/base-overview",id:"bases/base-overview",title:"Base overview",description:"This article explains the concept of bases in NocoDB.",source:"@site/docs/040.bases/010.base-overview.md",sourceDirName:"040.bases",slug:"/bases/base-overview",permalink:"/bases/base-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/040.bases/010.base-overview.md",tags:[{label:"Bases",permalink:"/tags/bases"},{label:"Overview",permalink:"/tags/overview"},{label:"Dashboard",permalink:"/tags/dashboard"}],version:"current",sidebarPosition:10,frontMatter:{title:"Base overview",description:"This article explains the concept of bases in NocoDB.",tags:["Bases","Overview","Dashboard"],keywords:["NocoDB base","base overview","base dashboard","base collaboration","base actions","delete base","base management","base administration","base settings","base organization"]},sidebar:"tutorialSidebar",previous:{title:"Actions on workspace",permalink:"/workspaces/actions-on-workspace"},next:{title:"Create base",permalink:"/bases/create-base"}},l={},c=[{value:"Base Dashboard",id:"base-dashboard",level:2},{value:"Related articles",id:"related-articles",level:2}],b={toc:c},p="wrapper";function d(e){let{components:a,...n}=e;return(0,r.kt)(p,(0,s.Z)({},b,n,{components:a,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"In NocoDB, bases are the foundational elements that encompass tables, views, forms, and webhooks,\nproviding a structured framework for data organization and collaborative work.\nIt's essential to understand that each base is inherently tied to a specific workspace and cannot be transferred between\ndifferent workspaces. The creator of a base is designated as the 'base owner,' and this ownership status is\nnon-transferable, conferring exclusive authority over the base, including the ability to delete it."),(0,r.kt)("p",null,"Bases also come with their unique set of members and access permissions, which take precedence over any permissions set at the workspace level.\nThis fine-grained control allows for tailored collaboration and data management within each base.\nImportantly, there are no restrictions on the number of members you can invite to a base, fostering open teamwork.\nSimilarly, you have the freedom to create as many tables as needed within a single base,\noffering the scalability required to accommodate diverse datasets and projects. "),(0,r.kt)("h2",{id:"base-dashboard"},"Base Dashboard"),(0,r.kt)("p",null,"The Base Dashboard serves as the primary landing page for a base, offering users a concise summary of its contents and functionality.\nThis central hub provides users with swift access to essential features such as base settings and collaboration tools.\nTo access the Base Dashboard, simply click on the base name located in the left sidebar. "),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"image",src:t(31963).Z,width:"2874",height:"1572"})),(0,r.kt)("p",null,"The Base Dashboard is organized into three key sections, each serving a distinct purpose:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Table List"),": This section provides a comprehensive list of all tables within the base,\nincluding those sourced from external data repositories. Users can conveniently access a specific table by clicking\non its name. Tables originating from external sources are clearly highlighted in the list for easy identification.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Base Members"),": In this section, users can view a roster of members associated with the base, along with their\nrespective permission levels. It's worth noting that members who are part of the workspace automatically inherit\naccess permissions at the base level. However, the base owner retains the ability to adjust these permissions,\neither increasing or decreasing them. Further details on collaboration management can be found in the dedicated\n",(0,r.kt)("a",{parentName:"p",href:"base-collaboration"},"Base Collaborations")," section.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Data Sources"),": NocoDB offers the functionality to connect with external data sources and seamlessly\nintegrate them as native tables. This section provides a listing of connected data sources, setting the stage\nfor additional details on this feature, which will be covered in the forthcoming ",(0,r.kt)("a",{parentName:"p",href:"/data-sources/data-source-overview"},"Data Sources")," section.\nThis feature empowers users to work with external data as effortlessly as with in-house data tables, enhancing the versatility\nand scope of data management within the base."))),(0,r.kt)("h2",{id:"related-articles"},"Related articles"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/base-overview"},"Base overview")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/create-base"},"Create an empty base")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/import-base-from-airtable"},"Import base from Airtable")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/base-collaboration"},"Invite team members to work on a base")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/share-base"},"Share base publicly")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/actions-on-base#rename-base"},"Rename base")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/actions-on-base#duplicate-base"},"Duplicate base")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/actions-on-base#star-base"},"Bookmark base")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/bases/actions-on-base#delete-base"},"Delete base"))))}d.isMDXComponent=!0},31963:(e,a,t)=>{t.d(a,{Z:()=>s});const s=t.p+"assets/images/base-dashboard-1c778031a554f46f75392fc786212606.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ebb99180.69344f2a.js b/packages/noco-docs/dist/assets/js/ebb99180.69344f2a.js new file mode 100644 index 0000000000..b873530109 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ebb99180.69344f2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[346],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>v});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},l=Object.keys(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a<l.length;a++)r=l[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=a.createContext({}),p=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},w="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},y=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,l=e.originalType,s=e.parentName,c=n(e,["components","mdxType","originalType","parentName"]),w=p(r),y=i,v=w["".concat(s,".").concat(y)]||w[y]||d[y]||l;return r?a.createElement(v,o(o({ref:t},c),{},{components:r})):a.createElement(v,o({ref:t},c))}));function v(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=r.length,o=new Array(l);o[0]=y;var n={};for(var s in t)hasOwnProperty.call(t,s)&&(n[s]=t[s]);n.originalType=e,n[w]="string"==typeof e?e:i,o[1]=n;for(var p=2;p<l;p++)o[p]=r[p];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}y.displayName="MDXCreateElement"},61669:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>l,metadata:()=>n,toc:()=>p});var a=r(87462),i=(r(67294),r(3905));const l={title:"Gallery",description:"Learn how to work with gallery view in NocoDB.",tags:["Views","Gallery view"],keywords:["NocoDB gallery view","gallery view","gallery"]},o=void 0,n={unversionedId:"views/view-types/gallery",id:"views/view-types/gallery",title:"Gallery",description:"Learn how to work with gallery view in NocoDB.",source:"@site/docs/090.views/040.view-types/020.gallery.md",sourceDirName:"090.views/040.view-types",slug:"/views/view-types/gallery",permalink:"/views/view-types/gallery",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/090.views/040.view-types/020.gallery.md",tags:[{label:"Views",permalink:"/tags/views"},{label:"Gallery view",permalink:"/tags/gallery-view"}],version:"current",sidebarPosition:20,frontMatter:{title:"Gallery",description:"Learn how to work with gallery view in NocoDB.",tags:["Views","Gallery view"],keywords:["NocoDB gallery view","gallery view","gallery"]},sidebar:"tutorialSidebar",previous:{title:"Grid",permalink:"/views/view-types/grid"},next:{title:"Form",permalink:"/views/view-types/form"}},s={},p=[{value:"Gallery View Actions",id:"gallery-view-actions",level:2},{value:"Gallery View Operations",id:"gallery-view-operations",level:2},{value:"Gallery View Record Operations",id:"gallery-view-record-operations",level:2},{value:"Related articles",id:"related-articles",level:2}],c={toc:p},w="wrapper";function d(e){let{components:t,...l}=e;return(0,i.kt)(w,(0,a.Z)({},c,l,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Gallery View allows you to display images as thumbnails with other fields just like a gallery. This view type is ideal for viewing images in a gallery-like interface. Like in Gallery, you can also perform various operations on the gallery view, such as sorting, filtering, grouping, and searching. You can also export the data in the gallery view to CSV or Excel format. This section will cover all the operations that can be performed on the gallery view."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"1010-2 Gallery",src:r(20656).Z,width:"2880",height:"1800"})),(0,i.kt)("h2",{id:"gallery-view-actions"},"Gallery View Actions"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/create-view/#create-new-view"},"Create a New Gallery View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#rename-view"},"Rename an Existing Gallery View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#duplicate-view"},"Duplicate a Gallery View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/actions-on-view#delete-view"},"Remove a Gallery View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/share-view"},"Share a Gallery View")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/views/views-overview#view-permission-types"},"Lock Gallery View for Edits"))),(0,i.kt)("h2",{id:"gallery-view-operations"},"Gallery View Operations"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#rearranging-fields"},"Rearrange Fields Within the Gallery")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#showhide-fields"},"Show or Hide Fields Within the Gallery")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/filter"},"Apply Filters to Display Specific Records on the Gallery")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/sort"},"Sort Records on the Gallery by One or More Criteria")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/search"},"Perform Quick Searches for Specific Data Within Fields")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/download#download-data"},"Export Data to CSV or Excel Format")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"/table-operations/field-operations#change-cover-field-gallerykanban-view"},"Change Cover Image")," ")),(0,i.kt)("h2",{id:"gallery-view-record-operations"},"Gallery View Record Operations"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Add a New Record to the Gallery"),": Currently it is not possible to insert a new record directly on the gallery view. However, you can add a new record to the table, and it will be displayed on the gallery view."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Edit an Existing Record on the Gallery"),": Click on the card on the gallery view to open the record in the expanded record view. You can edit the record in the form view and save it."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Delete a Single Record from the Gallery"),": Click on the card on the gallery view to open the record in the expanded record view. You can delete the record in the form view by using the expanded record context menu."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Delete Multiple Records in Bulk from the Gallery"),": Currently it is not possible to delete multiple records in bulk directly on the gallery view. However, you can delete multiple records in bulk from the grid view & it will be reflected on the gallery view.")),(0,i.kt)("h2",{id:"related-articles"},"Related articles"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"/views/view-types/grid"},"Grid View"),(0,i.kt)("br",{parentName:"p"}),"\n",(0,i.kt)("a",{parentName:"p",href:"/views/view-types/form"},"Form View"),(0,i.kt)("br",{parentName:"p"}),"\n",(0,i.kt)("a",{parentName:"p",href:"/views/view-types/kanban"},"Kanban View")))}d.isMDXComponent=!0},20656:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/gallery-45f0b39f541ab7afc2a5b7d44f010406.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/ec135315.b4b6192c.js b/packages/noco-docs/dist/assets/js/ec135315.b4b6192c.js new file mode 100644 index 0000000000..4a1a8d3607 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/ec135315.b4b6192c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[6125],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>u});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,a,i=function(e,t){if(null==e)return{};var r,a,i={},n=Object.keys(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(a=0;a<n.length;a++)r=n[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var d=a.createContext({}),s=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=s(e.components);return a.createElement(d.Provider,{value:t},e.children)},y="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),y=s(r),m=i,u=y["".concat(d,".").concat(m)]||y[m]||c[m]||n;return r?a.createElement(u,o(o({ref:t},p),{},{components:r})):a.createElement(u,o({ref:t},p))}));function u(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,o=new Array(n);o[0]=m;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l[y]="string"==typeof e?e:i,o[1]=l;for(var s=2;s<n;s++)o[s]=r[s];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},16033:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>c,frontMatter:()=>n,metadata:()=>l,toc:()=>s});var a=r(87462),i=(r(67294),r(3905));const n={title:"Primary key",description:"This article explains what a primary key is and how it is used in NocoDB.",tags:["Fields","Primary Key"],keywords:["NocoDB primary key","primary key","primary key in NocoDB","primary key in database"]},o="Primary Key",l={unversionedId:"fields/primary-key",id:"fields/primary-key",title:"Primary key",description:"This article explains what a primary key is and how it is used in NocoDB.",source:"@site/docs/070.fields/020.primary-key.md",sourceDirName:"070.fields",slug:"/fields/primary-key",permalink:"/fields/primary-key",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/020.primary-key.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Primary Key",permalink:"/tags/primary-key"}],version:"current",sidebarPosition:20,frontMatter:{title:"Primary key",description:"This article explains what a primary key is and how it is used in NocoDB.",tags:["Fields","Primary Key"],keywords:["NocoDB primary key","primary key","primary key in NocoDB","primary key in database"]},sidebar:"tutorialSidebar",previous:{title:"Fields overview",permalink:"/fields/fields-overview"},next:{title:"Display value",permalink:"/fields/display-value"}},d={},s=[{value:"Use of Primary Key",id:"use-of-primary-key",level:2},{value:"Primary Key in NocoDB",id:"primary-key-in-nocodb",level:2}],p={toc:s},y="wrapper";function c(e){let{components:t,...r}=e;return(0,i.kt)(y,(0,a.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"primary-key"},"Primary Key"),(0,i.kt)("p",null,"A primary key is a special database table field designated to uniquely identify each table record."),(0,i.kt)("h2",{id:"use-of-primary-key"},"Use of Primary Key"),(0,i.kt)("p",null,"As it uniquely identifies an individual record of a table, it is used internally by NocoDB for all operations associated with a record"),(0,i.kt)("h2",{id:"primary-key-in-nocodb"},"Primary Key in NocoDB"),(0,i.kt)("p",null,"Primary Key that gets defined / used in NocoDB depends on how underlying table was created. Summary is captured below"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"From UI, Create new table / Import from Excel / Import from CSV",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"An ",(0,i.kt)("inlineCode",{parentName:"li"},"ID")," ","[datatype: Integer]"," system field created by default during table creation is used as primary key"),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are inserted by default & can be omitted optionally; these fields can be deleted after table creation"))),(0,i.kt)("li",{parentName:"ol"},"Connect to existing external database",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"Existing ",(0,i.kt)("inlineCode",{parentName:"li"},"primary key")," field defined for a table is retained as is; NocoDB doesn't insert a new ID field"),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are not inserted by default"))),(0,i.kt)("li",{parentName:"ol"},"Import from Airtable",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"Airtable record ID is marked as primary key for imported records, and is mapped to field ",(0,i.kt)("inlineCode",{parentName:"li"},"ncRecordId")," ","[datatype: varchar]"),(0,i.kt)("li",{parentName:"ol"},"If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB"),(0,i.kt)("li",{parentName:"ol"},"Computed hash value for the entire record is stored in system field ",(0,i.kt)("inlineCode",{parentName:"li"},"ncRecordHash")),(0,i.kt)("li",{parentName:"ol"},"Additional system fields ",(0,i.kt)("inlineCode",{parentName:"li"},"created-at"),", ",(0,i.kt)("inlineCode",{parentName:"li"},"updated-at")," are not inserted by default"))),(0,i.kt)("li",{parentName:"ol"},"Create new table using SDK / API",(0,i.kt)("ol",{parentName:"li"},(0,i.kt)("li",{parentName:"ol"},"No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute ",(0,i.kt)("inlineCode",{parentName:"li"},"pk: true"),")")))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"What if Primary Key was missing?")," "),(0,i.kt)("p",{parentName:"admonition"},"It is possible to have a table without any primary key."),(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"External database table can be created without primary key configuration.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"New table can be created using SDK / API without primary key "),(0,i.kt)("p",{parentName:"li"},"In such scenario's, new records can be created in NocoDB for this table, but records can't be updated or deleted as there is no way for NocoDB to uniquely identify these records")))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},(0,i.kt)("strong",{parentName:"p"},"Can I change the Primary Key to another field within tables?")," "),(0,i.kt)("ul",{parentName:"admonition"},(0,i.kt)("li",{parentName:"ul"},"You can't update Primary Key from NocoDB UI. You can reconfigure it at database level directly & trigger ",(0,i.kt)("inlineCode",{parentName:"li"},"meta sync")," explicitly."))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f0eb83f3.c613762a.js b/packages/noco-docs/dist/assets/js/f0eb83f3.c613762a.js new file mode 100644 index 0000000000..3f0177fdba --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f0eb83f3.c613762a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2862],{3905:(t,e,a)=>{a.d(e,{Zo:()=>k,kt:()=>N});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?l(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function m(t,e){if(null==t)return{};var a,n,r=function(t,e){if(null==t)return{};var a,n,r={},l=Object.keys(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n<l.length;n++)a=l[n],e.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var p=n.createContext({}),d=function(t){var e=n.useContext(p),a=e;return t&&(a="function"==typeof t?t(e):i(i({},e),t)),a},k=function(t){var e=d(t.components);return n.createElement(p.Provider,{value:e},t.children)},c="mdxType",o={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},g=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,p=t.parentName,k=m(t,["components","mdxType","originalType","parentName"]),c=d(a),g=r,N=c["".concat(p,".").concat(g)]||c[g]||o[g]||l;return a?n.createElement(N,i(i({ref:e},k),{},{components:a})):n.createElement(N,i({ref:e},k))}));function N(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,i=new Array(l);i[0]=g;var m={};for(var p in e)hasOwnProperty.call(e,p)&&(m[p]=e[p]);m.originalType=t,m[c]="string"==typeof t?t:r,i[1]=m;for(var d=2;d<l;d++)i[d]=a[d];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}g.displayName="MDXCreateElement"},76908:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>p,contentTitle:()=>i,default:()=>o,frontMatter:()=>l,metadata:()=>m,toc:()=>d});var n=a(87462),r=(a(67294),a(3905));const l={title:"Team & Auth",description:"Breakdown of roles & permissions for team user management"},i=void 0,m={unversionedId:"setup-and-usages/team-and-auth",id:"version-0.109.7/setup-and-usages/team-and-auth",title:"Team & Auth",description:"Breakdown of roles & permissions for team user management",source:"@site/versioned_docs/version-0.109.7/030.setup-and-usages/230.team-and-auth.md",sourceDirName:"030.setup-and-usages",slug:"/setup-and-usages/team-and-auth",permalink:"/0.109.7/setup-and-usages/team-and-auth",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/versioned_docs/version-0.109.7/030.setup-and-usages/230.team-and-auth.md",tags:[],version:"0.109.7",sidebarPosition:230,frontMatter:{title:"Team & Auth",description:"Breakdown of roles & permissions for team user management"},sidebar:"tutorialSidebar",previous:{title:"Links",permalink:"/0.109.7/setup-and-usages/links"},next:{title:"Data Sources",permalink:"/0.109.7/setup-and-usages/meta-management"}},p={},d=[{value:"Accessing Team & Auth",id:"accessing-team--auth",level:2},{value:"User Management",id:"user-management",level:2},{value:"How to Add a User",id:"how-to-add-a-user",level:3},{value:"How to Update user permissions",id:"how-to-update-user-permissions",level:3},{value:"User Role Permissions",id:"user-role-permissions",level:3},{value:"Advanced Options & Configurations",id:"advanced-options--configurations",level:3},{value:"Schema Options",id:"schema-options",level:3},{value:"Record Options",id:"record-options",level:3},{value:"Comments",id:"comments",level:3},{value:"Views",id:"views",level:3},{value:"Project Generals",id:"project-generals",level:3},{value:"API Tokens Management",id:"api-tokens-management",level:2}],k={toc:d},c="wrapper";function o(t){let{components:e,...a}=t;return(0,r.kt)(c,(0,n.Z)({},k,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"accessing-team--auth"},"Accessing Team & Auth"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Team & Settings")," from the ",(0,r.kt)("inlineCode",{parentName:"li"},"Project Menu")," "),(0,r.kt)("li",{parentName:"ul"},"Access ",(0,r.kt)("inlineCode",{parentName:"li"},"Team & Auth")," under ",(0,r.kt)("inlineCode",{parentName:"li"},"Settings"))),(0,r.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,r.kt)("h2",{id:"user-management"},"User Management"),(0,r.kt)("h3",{id:"how-to-add-a-user"},"How to Add a User"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Go to ",(0,r.kt)("inlineCode",{parentName:"li"},"Team & Auth"),", click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Invite Team"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219830800-481f372f-86b1-4e2f-865d-3fb7c10663f7.png",alt:"image"})),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"Enter the user's ",(0,r.kt)("inlineCode",{parentName:"li"},"E-mail"),". Select ",(0,r.kt)("inlineCode",{parentName:"li"},"User Role"),", and Click ",(0,r.kt)("inlineCode",{parentName:"li"},"Invite"),".")),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"You can add multiple comma (,) seperated emails")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189817152-83fca866-7713-49ee-8068-d3eba1311353.png",alt:"Screenshot 2022-09-13 at 10 54 39 AM"})),(0,r.kt)("p",null,"If you do not have an SMTP sender configured, make sure to copy the invite link and manually send it to your collaborator."),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/189817156-f3dab634-dc25-4f9b-8126-865187aae254.png",alt:"Screenshot 2022-09-13 at 10 54 22 AM"})),(0,r.kt)("h3",{id:"how-to-update-user-permissions"},"How to Update user permissions"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Edit")," <1> menu to assign a different role to existing user"),(0,r.kt)("li",{parentName:"ol"},"Use ",(0,r.kt)("inlineCode",{parentName:"li"},"Delete")," <2> menu to remove a user from accessing current project")),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219830858-be7a4656-9f3b-440c-9a79-165f919223d7.png",alt:"image"})),(0,r.kt)("hr",null),(0,r.kt)("h3",{id:"user-role-permissions"},"User Role Permissions"),(0,r.kt)("h3",{id:"advanced-options--configurations"},"Advanced Options & Configurations"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Audit"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"App Store"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Team & Auth"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Project Metadata"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"New user: Add Owner"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"New user: Add Creator"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"New user: Add Editor"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"New user: Add Commenter"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"New user: Add Viewer"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"View existing users"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Preview mode"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")))),(0,r.kt)("h3",{id:"schema-options"},"Schema Options"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Add table"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Delete table"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Modify table"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Add column"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Delete column"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Modify column"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")))),(0,r.kt)("h3",{id:"record-options"},"Record Options"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Add row"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Delete row"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Modify row/ cell"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Expand row"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Right click on cell (add/edit row)"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"View table data (cell) contents"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")))),(0,r.kt)("h3",{id:"comments"},"Comments"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"View comments from others"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Add comments"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")))),(0,r.kt)("h3",{id:"views"},"Views"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Create new view"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Share view"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u274c")))),(0,r.kt)("h3",{id:"project-generals"},"Project Generals"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Owner ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Creator ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Editor ","\xa0"," ","\xa0"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Commenter"),(0,r.kt)("th",{parentName:"tr",align:"center"},"\xa0"," ","\xa0"," Viewer ","\xa0"," ","\xa0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Created views access"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Filter fields/ Column"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Filter fields/ Query"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Sort fields"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Theme"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Auth token"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Project Info"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Swagger API"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"center"},"\u2705")))),(0,r.kt)("h2",{id:"api-tokens-management"},"API Tokens Management"),(0,r.kt)("p",null,"NocoDB allows creating API tokens which allow it to be integrated seamlessly with 3rd party apps. API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called ",(0,r.kt)("inlineCode",{parentName:"p"},"xc-token"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Open ",(0,r.kt)("inlineCode",{parentName:"li"},"Project Menu"),", click on ",(0,r.kt)("inlineCode",{parentName:"li"},"Team & Settings"))),(0,r.kt)("img",{width:"322",alt:"image",src:"https://user-images.githubusercontent.com/35857179/194856648-67936db0-ee4d-4060-be3d-af9f86ef8fc6.png"}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Click ",(0,r.kt)("inlineCode",{parentName:"p"},"API Tokens Management")," tab under ",(0,r.kt)("inlineCode",{parentName:"p"},"Team & Auth")," section")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Click Add New Token"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/35857179/219835108-037127bd-4bf6-4d96-b691-139bd141631c.png",alt:"image"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Type an recognizable name for your token and click ",(0,r.kt)("inlineCode",{parentName:"li"},"Generate"))),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://user-images.githubusercontent.com/86527202/190062801-db3fab83-7974-4dfe-9c83-bf0d8a7dba1e.png",alt:"Screenshot 2022-09-14 at 10 20 10 AM"})),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Copy API token to your clipboard; use action menu to the right of token list")))}o.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f4191957.788dba4e.js b/packages/noco-docs/dist/assets/js/f4191957.788dba4e.js new file mode 100644 index 0000000000..2b59e8777b --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f4191957.788dba4e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5381],{56319:a=>{a.exports=JSON.parse('{"label":"External","permalink":"/tags/external","allTagsPath":"/tags","count":2,"items":[{"id":"data-sources/connect-to-data-source","title":"Connect to a Data source","description":"Learn how to connect to an external data-source (PG/MySQL) in NocoDB.","permalink":"/data-sources/connect-to-data-source"},{"id":"data-sources/sync-with-data-source","title":"Sync with Data source","description":"Learn how to sync changes done in external data source with NocoDB.","permalink":"/data-sources/sync-with-data-source"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f4472a32.dd919c72.js b/packages/noco-docs/dist/assets/js/f4472a32.dd919c72.js new file mode 100644 index 0000000000..a4aafc23f1 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f4472a32.dd919c72.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9123],{90399:t=>{t.exports=JSON.parse('{"label":"Attachment","permalink":"/tags/attachment","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/custom-types/attachment","title":"Attachment","description":"This article explains how to create & work with an Attachment field.","permalink":"/fields/field-types/custom-types/attachment"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f472468a.5dd0bcc4.js b/packages/noco-docs/dist/assets/js/f472468a.5dd0bcc4.js new file mode 100644 index 0000000000..0cb2816971 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f472468a.5dd0bcc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9214],{90290:s=>{s.exports=JSON.parse('{"label":"Links","permalink":"/tags/links","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/links-based/links","title":"Links","description":"This article explains how to create & work with a Links field.","permalink":"/fields/field-types/links-based/links"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f6aad64f.d7381bfa.js b/packages/noco-docs/dist/assets/js/f6aad64f.d7381bfa.js new file mode 100644 index 0000000000..03a8906076 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f6aad64f.d7381bfa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[853],{63825:e=>{e.exports=JSON.parse('{"label":"Open Source","permalink":"/tags/open-source","allTagsPath":"/tags","count":5,"items":[{"id":"getting-started/self-hosted/environment-variables","title":"Environment variables","description":"Environment Variables for NocoDB!","permalink":"/getting-started/self-hosted/environment-variables"},{"id":"account-settings/oss-specific-details","title":"In Open Source","description":"This article explains Account settings specifics in Open source NocoDB.","permalink":"/account-settings/oss-specific-details"},{"id":"collaboration/oss-specific-details","title":"In Open Source","description":"This article explains specifics of User management in OSS.","permalink":"/collaboration/oss-specific-details"},{"id":"getting-started/self-hosted/installation","title":"Installation","description":"Simple installation - takes about three minutes!","permalink":"/getting-started/self-hosted/installation"},{"id":"getting-started/self-hosted/upgrading","title":"Upgrading","description":"Upgrading NocoDB : Docker, Node and Homebrew!","permalink":"/getting-started/self-hosted/upgrading"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f7d905ba.ac350311.js b/packages/noco-docs/dist/assets/js/f7d905ba.ac350311.js new file mode 100644 index 0000000000..1a66ef1d56 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f7d905ba.ac350311.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7746],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>g});var i=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?l(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},l=Object.keys(e);for(i=0;i<l.length;i++)r=l[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)r=l[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),p=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},d=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},f=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),c=p(r),f=n,g=c["".concat(s,".").concat(f)]||c[f]||u[f]||l;return r?i.createElement(g,a(a({ref:t},d),{},{components:r})):i.createElement(g,a({ref:t},d))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,a=new Array(l);a[0]=f;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[c]="string"==typeof e?e:n,a[1]=o;for(var p=2;p<l;p++)a[p]=r[p];return i.createElement.apply(null,a)}return i.createElement.apply(null,r)}f.displayName="MDXCreateElement"},67268:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>p});var i=r(87462),n=(r(67294),r(3905));const l={title:"Filtering records",description:"Learn how to filter records in NocoDB.",tags:["Table operations","Filter","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table operations","table operations overview","filter"]},a=void 0,o={unversionedId:"table-operations/filter",id:"table-operations/filter",title:"Filtering records",description:"Learn how to filter records in NocoDB.",source:"@site/docs/060.table-operations/030.filter.md",sourceDirName:"060.table-operations",slug:"/table-operations/filter",permalink:"/table-operations/filter",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/060.table-operations/030.filter.md",tags:[{label:"Table operations",permalink:"/tags/table-operations"},{label:"Filter",permalink:"/tags/filter"},{label:"Gallery view",permalink:"/tags/gallery-view"},{label:"Kanban view",permalink:"/tags/kanban-view"},{label:"Grid view",permalink:"/tags/grid-view"}],version:"current",sidebarPosition:30,frontMatter:{title:"Filtering records",description:"Learn how to filter records in NocoDB.",tags:["Table operations","Filter","Gallery view","Kanban view","Grid view"],keywords:["NocoDB table operations","table operations overview","filter"]},sidebar:"tutorialSidebar",previous:{title:"Hide & reorder fields",permalink:"/table-operations/field-operations"},next:{title:"Sorting records",permalink:"/table-operations/sort"}},s={},p=[{value:"Adding or Editing Filters",id:"adding-or-editing-filters",level:3},{value:"Deleting Filters",id:"deleting-filters",level:3},{value:"Grouping Filters",id:"grouping-filters",level:3},{value:"Enabling NULL and EMPTY Filters",id:"enabling-null-and-empty-filters",level:2},{value:"Supported Filters",id:"supported-filters",level:3},{value:"Related topics",id:"related-topics",level:3}],d={toc:p},c="wrapper";function u(e){let{components:t,...l}=e;return(0,n.kt)(c,(0,i.Z)({},d,l,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"Filters provide a powerful way to narrow down and organize your data according to your specific requirements. NocoDB supports nested filters, allowing you to select multiple fields and conditions for filtering. You can choose between ",(0,n.kt)("inlineCode",{parentName:"p"},"and")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"or")," mode of operation to combine filters, and filtering also supports Lookup, Formula, and Nested Data."),(0,n.kt)("h3",{id:"adding-or-editing-filters"},"Adding or Editing Filters"),(0,n.kt)("p",null,"To add or edit a filter, simply click the ",(0,n.kt)("inlineCode",{parentName:"p"},"Filter")," button in the toolbar and select either ",(0,n.kt)("inlineCode",{parentName:"p"},"Add filter")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"Add filter group"),"."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Add Filter",src:r(59155).Z,width:"2300",height:"610"})),(0,n.kt)("p",null,"Configure the filter by specifying the ",(0,n.kt)("inlineCode",{parentName:"p"},"Field,")," ",(0,n.kt)("inlineCode",{parentName:"p"},"Operation,")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"Value")," (if applicable)."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Filter Configuration",src:r(19911).Z,width:"2298",height:"800"})),(0,n.kt)("p",null,"You can combine multiple filter conditions using either ",(0,n.kt)("inlineCode",{parentName:"p"},"And")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"Or")," mode of operation."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Nested Filters",src:r(48448).Z,width:"2296",height:"1056"})),(0,n.kt)("h3",{id:"deleting-filters"},"Deleting Filters"),(0,n.kt)("p",null,"To remove a filter, click on the bin icon located to the right of the respective filter."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Delete Filter",src:r(92390).Z,width:"2296",height:"1056"})),(0,n.kt)("h3",{id:"grouping-filters"},"Grouping Filters"),(0,n.kt)("p",null,"You also have the option to group multiple filters together using a Filter Group."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Grouped Filters",src:r(51970).Z,width:"2298",height:"1268"})),(0,n.kt)("h2",{id:"enabling-null-and-empty-filters"},"Enabling NULL and EMPTY Filters"),(0,n.kt)("p",null,"By default, NULL filters (",(0,n.kt)("inlineCode",{parentName:"p"},"is null")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"is not null"),") and EMPTY filters (",(0,n.kt)("inlineCode",{parentName:"p"},"is empty")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"is not empty"),") are hidden. If you wish to filter out either of these explicitly, you can enable ",(0,n.kt)("inlineCode",{parentName:"p"},"Show NULL and EMPTY Filter")," in ",(0,n.kt)("a",{parentName:"p",href:"/bases/actions-on-base#base-settings"},"Project settings"),"."),(0,n.kt)("p",null,"Before enabling ",(0,n.kt)("inlineCode",{parentName:"p"},"Show NULL and EMPTY Filter"),":"),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Show isBlank",src:r(75518).Z,width:"2300",height:"1028"})),(0,n.kt)("p",null,"Once enabled, you can use the ",(0,n.kt)("inlineCode",{parentName:"p"},"is null")," & ",(0,n.kt)("inlineCode",{parentName:"p"},"is empty")," filters to filter out cells with NULL or EMPTY values."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Show NULL and EMPTY Filter",src:r(76227).Z,width:"2300",height:"1112"})),(0,n.kt)("p",null,"Alternatively, you can use Blank filters to filter out cells with NULL or EMPTY values."),(0,n.kt)("h3",{id:"supported-filters"},"Supported Filters"),(0,n.kt)("p",null,"NocoDB currently supports various types of filters for corresponding fields. Please refer to the matrix below for detailed information."),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://docs.google.com/spreadsheets/d/e/2PACX-1vTpCNKtA-szaXUKJEO5uuSIRnzUOK793MKnyBz9m2rQcwn7HqK19jPHeER-IIRWH9X56J78wfxXZuuv/pubhtml?gid=427284630&single=true&widget=true&headers=false"},"Filter Matrix")),(0,n.kt)("h3",{id:"related-topics"},"Related topics"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"field-operations"},"Field operations")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"sort"},"Sort")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"group-by"},"GroupBy")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"row-height"},"Row height")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"search"},"Quick Search")),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"download"},"Download"))))}u.isMDXComponent=!0},59155:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-1-6d82d6adaa0df9338b4c29b6376de557.png"},19911:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-2-51019e4c6061e78b8b3df002cf6db8f5.png"},48448:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-3-f6db70222f513a250bf4b0bd36e3c158.png"},51970:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-4-058ba55633cb86f5b1a5431c1ee8766d.png"},92390:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-5-e2ea016b369c57c5787ec7c4259f7fc6.png"},75518:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-is-blank-93b9ad8f1a235a7a0c0e198c076a7caf.png"},76227:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/filter-is-null-empty-1341b5cc9439c361df4992106ff00ad6.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f9241299.0971d38c.js b/packages/noco-docs/dist/assets/js/f9241299.0971d38c.js new file mode 100644 index 0000000000..193cd7edb8 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f9241299.0971d38c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[3521],{3905:(e,o,r)=>{r.d(o,{Zo:()=>p,kt:()=>f});var t=r(67294);function a(e,o,r){return o in e?Object.defineProperty(e,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[o]=r,e}function n(e,o){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);o&&(t=t.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),r.push.apply(r,t)}return r}function i(e){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?n(Object(r),!0).forEach((function(o){a(e,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(r,o))}))}return e}function l(e,o){if(null==e)return{};var r,t,a=function(e,o){if(null==e)return{};var r,t,a={},n=Object.keys(e);for(t=0;t<n.length;t++)r=n[t],o.indexOf(r)>=0||(a[r]=e[r]);return a}(e,o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(t=0;t<n.length;t++)r=n[t],o.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=t.createContext({}),c=function(e){var o=t.useContext(s),r=o;return e&&(r="function"==typeof e?e(o):i(i({},o),e)),r},p=function(e){var o=c(e.components);return t.createElement(s.Provider,{value:o},e.children)},b="mdxType",u={inlineCode:"code",wrapper:function(e){var o=e.children;return t.createElement(t.Fragment,{},o)}},v=t.forwardRef((function(e,o){var r=e.components,a=e.mdxType,n=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),b=c(r),v=a,f=b["".concat(s,".").concat(v)]||b[v]||u[v]||n;return r?t.createElement(f,i(i({ref:o},p),{},{components:r})):t.createElement(f,i({ref:o},p))}));function f(e,o){var r=arguments,a=o&&o.mdxType;if("string"==typeof e||a){var n=r.length,i=new Array(n);i[0]=v;var l={};for(var s in o)hasOwnProperty.call(o,s)&&(l[s]=o[s]);l.originalType=e,l[b]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<n;c++)i[c]=r[c];return t.createElement.apply(null,i)}return t.createElement.apply(null,r)}v.displayName="MDXCreateElement"},67452:(e,o,r)=>{r.r(o),r.d(o,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>n,metadata:()=>l,toc:()=>c});var t=r(87462),a=(r(67294),r(3905));const n={title:"Collaboration overview",description:"This article explains various collaboration features that NocoDB offers.",tags:["Collaboration","Workspaces","Bases","Share","Member","Overview"],keywords:["Collaboration overview"]},i=void 0,l={unversionedId:"collaboration/collaboration-overview",id:"collaboration/collaboration-overview",title:"Collaboration overview",description:"This article explains various collaboration features that NocoDB offers.",source:"@site/docs/120.collaboration/010.collaboration-overview.md",sourceDirName:"120.collaboration",slug:"/collaboration/collaboration-overview",permalink:"/collaboration/collaboration-overview",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/120.collaboration/010.collaboration-overview.md",tags:[{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Bases",permalink:"/tags/bases"},{label:"Share",permalink:"/tags/share"},{label:"Member",permalink:"/tags/member"},{label:"Overview",permalink:"/tags/overview"}],version:"current",sidebarPosition:10,frontMatter:{title:"Collaboration overview",description:"This article explains various collaboration features that NocoDB offers.",tags:["Collaboration","Workspaces","Bases","Share","Member","Overview"],keywords:["Collaboration overview"]},sidebar:"tutorialSidebar",previous:{title:"Roles & permissions overview",permalink:"/roles-and-permissions/roles-permissions-overview"},next:{title:"Workspace collaboration",permalink:"/collaboration/workspace-collaboration"}},s={},c=[],p={toc:c},b="wrapper";function u(e){let{components:o,...r}=e;return(0,a.kt)(b,(0,t.Z)({},p,r,{components:o,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"At NocoDB, our passion lies in promoting teamwork, and it's a significant factor contributing to our popularity. Through NocoDB's collaborative functionalities, you have the ability to foster effective task distribution and team communication by extending invitations to others for seamless cooperation."),(0,a.kt)("p",null,"In this segment, we'll discuss various collaboration features that NocoDB offers."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"workspace-collaboration"},"Workspace collaboration"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"base-collaboration"},"Base collaboration"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"share-base"},"Share base"),(0,a.kt)("br",{parentName:"p"}),"\n",(0,a.kt)("a",{parentName:"p",href:"share-view"},"Share view")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/f9538193.9c7eadce.js b/packages/noco-docs/dist/assets/js/f9538193.9c7eadce.js new file mode 100644 index 0000000000..2a2aac5874 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/f9538193.9c7eadce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[7235],{96482:e=>{e.exports=JSON.parse('{"label":"Currency","permalink":"/tags/currency","allTagsPath":"/tags","count":1,"items":[{"id":"fields/field-types/numerical/currency","title":"Currency","description":"This article explains how to create & work with a Currency field.","permalink":"/fields/field-types/numerical/currency"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/fb12fd2d.7f3d8a16.js b/packages/noco-docs/dist/assets/js/fb12fd2d.7f3d8a16.js new file mode 100644 index 0000000000..2d50157a13 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/fb12fd2d.7f3d8a16.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1416],{82648:e=>{e.exports=JSON.parse('{"label":"Sort","permalink":"/tags/sort","allTagsPath":"/tags","count":2,"items":[{"id":"fields/actions-on-field","title":"Actions on field","description":"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.","permalink":"/fields/actions-on-field"},{"id":"table-operations/sort","title":"Sorting records","description":"Learn how to sort records in NocoDB.","permalink":"/table-operations/sort"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/fb5c685c.a9e94066.js b/packages/noco-docs/dist/assets/js/fb5c685c.a9e94066.js new file mode 100644 index 0000000000..c4ba79f2c0 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/fb5c685c.a9e94066.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[1067],{86841:e=>{e.exports=JSON.parse('{"label":"Create","permalink":"/tags/create","allTagsPath":"/tags","count":6,"items":[{"id":"bases/create-base","title":"Create base","description":"Learn how to create a base in NocoDB.","permalink":"/bases/create-base"},{"id":"tables/create-table","title":"Create empty table","description":"Learn how to create a table in NocoDB.","permalink":"/tables/create-table"},{"id":"records/create-record","title":"Create record","description":"Learn how to create a record in NocoDB.","permalink":"/records/create-record"},{"id":"views/create-view","title":"Create view","description":"Learn how to create a new view in NocoDB.","permalink":"/views/create-view"},{"id":"automation/webhook/create-webhook","title":"Create webhook","description":"Learn how to create a webhook in NocoDB.","permalink":"/automation/webhook/create-webhook"},{"id":"workspaces/create-workspace","title":"Create workspace","description":"Learn how to create a workspace in NocoDB","permalink":"/workspaces/create-workspace"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/fb60c522.cccea2fd.js b/packages/noco-docs/dist/assets/js/fb60c522.cccea2fd.js new file mode 100644 index 0000000000..afef48fab5 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/fb60c522.cccea2fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[5407],{3905:(e,t,i)=>{i.d(t,{Zo:()=>p,kt:()=>m});var l=i(67294);function n(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function a(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,l)}return i}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?a(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):a(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function d(e,t){if(null==e)return{};var i,l,n=function(e,t){if(null==e)return{};var i,l,n={},a=Object.keys(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||(n[i]=e[i]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(l=0;l<a.length;l++)i=a[l],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(n[i]=e[i])}return n}var r=l.createContext({}),s=function(e){var t=l.useContext(r),i=t;return e&&(i="function"==typeof e?e(t):o(o({},t),e)),i},p=function(e){var t=s(e.components);return l.createElement(r.Provider,{value:t},e.children)},c="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return l.createElement(l.Fragment,{},t)}},u=l.forwardRef((function(e,t){var i=e.components,n=e.mdxType,a=e.originalType,r=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),c=s(i),u=n,m=c["".concat(r,".").concat(u)]||c[u]||f[u]||a;return i?l.createElement(m,o(o({ref:t},p),{},{components:i})):l.createElement(m,o({ref:t},p))}));function m(e,t){var i=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=i.length,o=new Array(a);o[0]=u;var d={};for(var r in t)hasOwnProperty.call(t,r)&&(d[r]=t[r]);d.originalType=e,d[c]="string"==typeof e?e:n,o[1]=d;for(var s=2;s<a;s++)o[s]=i[s];return l.createElement.apply(null,o)}return l.createElement.apply(null,i)}u.displayName="MDXCreateElement"},94065:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>f,frontMatter:()=>a,metadata:()=>d,toc:()=>s});var l=i(87462),n=(i(67294),i(3905));const a={title:"Actions on field",description:"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.",tags:["Fields","Rename","Delete","Duplicate","Hide","Display value","Sort","Record Height","Field Width"],keywords:["NocoDB fields","fields overview","field administration","field organization"]},o=void 0,d={unversionedId:"fields/actions-on-field",id:"fields/actions-on-field",title:"Actions on field",description:"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.",source:"@site/docs/070.fields/060.actions-on-field.md",sourceDirName:"070.fields",slug:"/fields/actions-on-field",permalink:"/fields/actions-on-field",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/070.fields/060.actions-on-field.md",tags:[{label:"Fields",permalink:"/tags/fields"},{label:"Rename",permalink:"/tags/rename"},{label:"Delete",permalink:"/tags/delete"},{label:"Duplicate",permalink:"/tags/duplicate"},{label:"Hide",permalink:"/tags/hide"},{label:"Display value",permalink:"/tags/display-value"},{label:"Sort",permalink:"/tags/sort"},{label:"Record Height",permalink:"/tags/record-height"},{label:"Field Width",permalink:"/tags/field-width"}],version:"current",sidebarPosition:60,frontMatter:{title:"Actions on field",description:"This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.",tags:["Fields","Rename","Delete","Duplicate","Hide","Display value","Sort","Record Height","Field Width"],keywords:["NocoDB fields","fields overview","field administration","field organization"]},sidebar:"tutorialSidebar",previous:{title:"Multi-field editor",permalink:"/fields/multi-fields-editor"},next:{title:"Records overview",permalink:"/records/records-overview"}},r={},s=[{value:"Fields context menu",id:"fields-context-menu",level:2},{value:"Edit",id:"edit",level:3},{value:"Rename field",id:"rename-field",level:4},{value:"Change field type",id:"change-field-type",level:4},{value:"Change default value",id:"change-default-value",level:4},{value:"Change field width",id:"change-field-width",level:3},{value:"Hide field",id:"hide-field",level:3},{value:"Set as Display value",id:"set-as-display-value",level:3},{value:"Sort Ascending",id:"sort-ascending",level:3},{value:"Sort Descending",id:"sort-descending",level:3},{value:"Duplicate field",id:"duplicate-field",level:3},{value:"Insert after a field",id:"insert-after-a-field",level:3},{value:"Insert before a field",id:"insert-before-a-field",level:3},{value:"Delete field",id:"delete-field",level:3}],p={toc:s},c="wrapper";function f(e){let{components:t,...a}=e;return(0,n.kt)(c,(0,l.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"fields-context-menu"},"Fields context menu"),(0,n.kt)("p",null,"Fields context menu can be accessed by clicking on the dropdown icon (\ud83d\udd3d) next to the field name.",(0,n.kt)("br",{parentName:"p"}),"\n",(0,n.kt)("img",{alt:"Fields context menu",src:i(63523).Z,width:"2880",height:"1800"})),(0,n.kt)("h3",{id:"edit"},"Edit"),(0,n.kt)("h4",{id:"rename-field"},"Rename field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Edit")," option."),(0,n.kt)("li",{parentName:"ol"},"Enter new field name as required in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Field Name")," field."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Rename field",src:i(61446).Z,width:"2876",height:"1348"})),(0,n.kt)("h4",{id:"change-field-type"},"Change field type"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Edit")," option."),(0,n.kt)("li",{parentName:"ol"},"Select new field type from the ",(0,n.kt)("inlineCode",{parentName:"li"},"Field Type")," dropdown."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Change field type",src:i(20229).Z,width:"2876",height:"1348"})),(0,n.kt)("h4",{id:"change-default-value"},"Change default value"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Edit")," option."),(0,n.kt)("li",{parentName:"ol"},"Enter new default value in the ",(0,n.kt)("inlineCode",{parentName:"li"},"Default Value")," field. To disable, click on ",(0,n.kt)("inlineCode",{parentName:"li"},"x")," icon."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Save Field")," button.")),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Change default value",src:i(68895).Z,width:"2876",height:"1348"})),(0,n.kt)("h3",{id:"change-field-width"},"Change field width"),(0,n.kt)("p",null,"To adjust the width of the field, hover over the field edge and drag to adjust the width."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Change field width",src:i(83970).Z,width:"2360",height:"860"})),(0,n.kt)("h3",{id:"hide-field"},"Hide field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Hide Field")," option ")),(0,n.kt)("admonition",{type:"note"},(0,n.kt)("ul",{parentName:"admonition"},(0,n.kt)("li",{parentName:"ul"},"Hidden fields are not visible in the table view, but will still be accessible for Formulas, Sort, Filter, etc."),(0,n.kt)("li",{parentName:"ul"},"To un hide a field, use ",(0,n.kt)("inlineCode",{parentName:"li"},"Toolbar > Fields")," menu"),(0,n.kt)("li",{parentName:"ul"},"Fields can also be marked as hidden from ",(0,n.kt)("inlineCode",{parentName:"li"},"Toolbar > Fields")," menu"))),(0,n.kt)("h3",{id:"set-as-display-value"},"Set as Display value"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Set as Display Value")," option.")),(0,n.kt)("p",null,"Refer to ",(0,n.kt)("a",{parentName:"p",href:"/fields/display-value"},"Display Value")," for more details."),(0,n.kt)("h3",{id:"sort-ascending"},"Sort Ascending"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Sort Ascending")," option.")),(0,n.kt)("h3",{id:"sort-descending"},"Sort Descending"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Sort Descending")," option.")),(0,n.kt)("h3",{id:"duplicate-field"},"Duplicate field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Duplicate")," option.")),(0,n.kt)("p",null,"Duplicated field sans the data will be created with suffix ",(0,n.kt)("inlineCode",{parentName:"p"},"_copy")," in its name & will be placed to the right of the original field."),(0,n.kt)("h3",{id:"insert-after-a-field"},"Insert after a field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Insert after")," option.")),(0,n.kt)("p",null,"New field will be created to the right of the original field."),(0,n.kt)("h3",{id:"insert-before-a-field"},"Insert before a field"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu"),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Insert before")," option.")),(0,n.kt)("p",null,"New field will be created to the left of the original field."),(0,n.kt)("h3",{id:"delete-field"},"Delete field"),(0,n.kt)("admonition",{type:"danger"},(0,n.kt)("p",{parentName:"admonition"},(0,n.kt)("strong",{parentName:"p"},"This action cannot be undone."))),(0,n.kt)("p",null,"To delete a field, follow the steps below:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Open the field context menu by clicking on dropdown icon (\ud83d\udd3d) ."),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("strong",{parentName:"li"},"Delete"),"."),(0,n.kt)("li",{parentName:"ol"},"Confirm the deletion by clicking on ",(0,n.kt)("strong",{parentName:"li"},"Delete Field")," on the confirmation modal.")))}f.isMDXComponent=!0},63523:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/fields-context-menu-bdaf40426dd6cee3e064967ef9c0e1bd.png"},61446:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/fields-edit-2-565e86f68e89b2c0d5a009e26825586b.png"},20229:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/fields-edit-3-9f36d47020d18da0b1f30c893bc62b73.png"},68895:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/fields-edit-4-5eb8140cd39f4ee2364081b214612861.png"},83970:(e,t,i)=>{i.d(t,{Z:()=>l});const l=i.p+"assets/images/fields-width-b843c90fee1c762db57dd39a37c931cf.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/fc37d7fe.55f2b5bf.js b/packages/noco-docs/dist/assets/js/fc37d7fe.55f2b5bf.js new file mode 100644 index 0000000000..519fc5e5cd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/fc37d7fe.55f2b5bf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[9485],{8673:e=>{e.exports=JSON.parse('{"label":"Member","permalink":"/tags/member","allTagsPath":"/tags","count":2,"items":[{"id":"collaboration/collaboration-overview","title":"Collaboration overview","description":"This article explains various collaboration features that NocoDB offers.","permalink":"/collaboration/collaboration-overview"},{"id":"account-settings/profile-page","title":"Profile page","description":"This article explains how to manage your profile page.","permalink":"/account-settings/profile-page"}]}')}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/fe112e79.e62e8f04.js b/packages/noco-docs/dist/assets/js/fe112e79.e62e8f04.js new file mode 100644 index 0000000000..5516322486 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/fe112e79.e62e8f04.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[2776],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>b});var o=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function n(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,o,a=function(e,t){if(null==e)return{};var r,o,a={},s=Object.keys(e);for(o=0;o<s.length;o++)r=s[o],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)r=s[o],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):n(n({},t),e)),r},p=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},m="mdxType",k={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var r=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=c(r),d=a,b=m["".concat(l,".").concat(d)]||m[d]||k[d]||s;return r?o.createElement(b,n(n({ref:t},p),{},{components:r})):o.createElement(b,n({ref:t},p))}));function b(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var s=r.length,n=new Array(s);n[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[m]="string"==typeof e?e:a,n[1]=i;for(var c=2;c<s;c++)n[c]=r[c];return o.createElement.apply(null,n)}return o.createElement.apply(null,r)}d.displayName="MDXCreateElement"},57117:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>k,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=r(87462),a=(r(67294),r(3905));const s={title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",tags:["Workspaces","Collaboration","Members","Invite","Roles","Permissions"],keywords:["Workspace configuration","Invite members","Member roles","Access permissions","Displaying workspace members","Modifying member roles","Removing workspace members","Workspace collaboration","Team collaboration","Access control","Role-based permissions","Workspace management","User roles","Workspace settings","Workspace administration","Member invitation","User access","Member management","Workspace teamwork","Workspace organization"]},n=void 0,i={unversionedId:"workspaces/workspace-collaboration",id:"workspaces/workspace-collaboration",title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",source:"@site/docs/030.workspaces/030.workspace-collaboration.md",sourceDirName:"030.workspaces",slug:"/workspaces/workspace-collaboration",permalink:"/workspaces/workspace-collaboration",draft:!1,editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/docs/030.workspaces/030.workspace-collaboration.md",tags:[{label:"Workspaces",permalink:"/tags/workspaces"},{label:"Collaboration",permalink:"/tags/collaboration"},{label:"Members",permalink:"/tags/members"},{label:"Invite",permalink:"/tags/invite"},{label:"Roles",permalink:"/tags/roles"},{label:"Permissions",permalink:"/tags/permissions"}],version:"current",sidebarPosition:30,frontMatter:{title:"Workspace collaboration",description:"This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.",tags:["Workspaces","Collaboration","Members","Invite","Roles","Permissions"],keywords:["Workspace configuration","Invite members","Member roles","Access permissions","Displaying workspace members","Modifying member roles","Removing workspace members","Workspace collaboration","Team collaboration","Access control","Role-based permissions","Workspace management","User roles","Workspace settings","Workspace administration","Member invitation","User access","Member management","Workspace teamwork","Workspace organization"]},sidebar:"tutorialSidebar",previous:{title:"Create workspace",permalink:"/workspaces/create-workspace"},next:{title:"Actions on workspace",permalink:"/workspaces/actions-on-workspace"}},l={},c=[{value:"Invite members to Workspace",id:"invite-members-to-workspace",level:2},{value:"List Workspace members",id:"list-workspace-members",level:2},{value:"Modify Workspace Member Roles",id:"modify-workspace-member-roles",level:2},{value:"Remove Workspace Members",id:"remove-workspace-members",level:2},{value:"Related articles",id:"related-articles",level:2}],p={toc:c},m="wrapper";function k(e){let{components:t,...s}=e;return(0,a.kt)(m,(0,o.Z)({},p,s,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Next logical step after creating a workspace is to invite members to it. In this section, we will guide you through the process of inviting members to your workspace.\nA comprehensive guide regarding roles and permissions can be accessed ",(0,a.kt)("a",{parentName:"p",href:"/roles-and-permissions/roles-permissions-overview"},"here"),"."),(0,a.kt)("h2",{id:"invite-members-to-workspace"},"Invite members to Workspace"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Navigate to the Workspace configuration page by selecting ",(0,a.kt)("inlineCode",{parentName:"li"},"Team & Settings")," in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Input the email address of the intended member for the invitation."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("inlineCode",{parentName:"li"},"Role")," dropdown menu"),(0,a.kt)("li",{parentName:"ol"},"Choose the appropriate access permission for the member from the dropdown menu."),(0,a.kt)("li",{parentName:"ol"},"Conclude the process by selecting the ",(0,a.kt)("inlineCode",{parentName:"li"},"Add Member(s)")," button.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:r(63013).Z,width:"2874",height:"1574"})," "),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"You can invite multiple members simultaneously by entering their email addresses, separated by commas.")),(0,a.kt)("h2",{id:"list-workspace-members"},"List Workspace members"),(0,a.kt)("p",null,"The ",(0,a.kt)("inlineCode",{parentName:"p"},"Members")," tab in ",(0,a.kt)("inlineCode",{parentName:"p"},"Team & Settings")," displays a list of users who have been granted access to the workspace."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Navigate to the Workspace configuration page by selecting ",(0,a.kt)("inlineCode",{parentName:"li"},"Team & Settings")," in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:r(2594).Z,width:"2878",height:"1476"})),(0,a.kt)("h2",{id:"modify-workspace-member-roles"},"Modify Workspace Member Roles"),(0,a.kt)("p",null,"You can modify the access permissions of members by following these steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Navigate to the Workspace configuration page by selecting ",(0,a.kt)("inlineCode",{parentName:"li"},"Team & Settings")," in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Access the dropdown menu."),(0,a.kt)("li",{parentName:"ol"},"Select the desired new role option.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:r(64593).Z,width:"2872",height:"1324"})),(0,a.kt)("h2",{id:"remove-workspace-members"},"Remove Workspace Members"),(0,a.kt)("p",null,"To remove a member from the workspace, take the following steps:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Navigate to the Workspace configuration page by selecting ",(0,a.kt)("inlineCode",{parentName:"li"},"Team & Settings")," in the left sidebar."),(0,a.kt)("li",{parentName:"ol"},"Access the ",(0,a.kt)("inlineCode",{parentName:"li"},"Members")," tab."),(0,a.kt)("li",{parentName:"ol"},"Click on the vertical ellipses ",(0,a.kt)("inlineCode",{parentName:"li"},"\u22ee")," to open the context menu."),(0,a.kt)("li",{parentName:"ol"},"Select the ",(0,a.kt)("inlineCode",{parentName:"li"},"Remove User")," option.")),(0,a.kt)("p",null,(0,a.kt)("img",{alt:"image",src:r(5401).Z,width:"2868",height:"1396"})),(0,a.kt)("h2",{id:"related-articles"},"Related articles"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/workspaces/workspace-overview"},"Workspace overview")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/workspaces/create-workspace"},"Create workspace")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#rename-workspace"},"Rename workspace")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/workspaces/actions-on-workspace#delete-workspace"},"Delete workspace"))))}k.isMDXComponent=!0},63013:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/workspace-collaboration-acb162d8d579249744a6a2d6e3280fbf.png"},2594:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/workspace-members-list-52e58f7e389b1a6840ce31a4a195104a.png"},5401:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/workspace-members-remove-70769f0f7d860d5436cd08030d0e26c2.png"},64593:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/workspace-members-role-change-be6445f0fa9629193ac81affb3b843f1.png"}}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/main.ba728574.js b/packages/noco-docs/dist/assets/js/main.ba728574.js new file mode 100644 index 0000000000..26f2e146fd --- /dev/null +++ b/packages/noco-docs/dist/assets/js/main.ba728574.js @@ -0,0 +1,2 @@ +/*! For license information please see main.ba728574.js.LICENSE.txt */ +(self.webpackChunknoco_docs=self.webpackChunknoco_docs||[]).push([[179],{50997:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),a=n(87462),o=n(68356),i=n.n(o),s=n(16887);const l={"006c1c22":[()=>n.e(1015).then(n.t.bind(n,40992,19)),"~docs/default/tag-tags-geometry-c6f.json",40992],"00aa88f5":[()=>n.e(1185).then(n.bind(n,28350)),"@site/docs/140.account-settings/030.oss-specific-details.md",28350],"013b8728":[()=>n.e(1371).then(n.t.bind(n,68542,19)),"~docs/default/tag-tags-productivity-hacks-06f.json",68542],"01865ba3":[()=>n.e(43).then(n.bind(n,71661)),"@site/docs/020.getting-started/020.quick-start.md",71661],"023320c3":[()=>n.e(1484).then(n.bind(n,9014)),"@site/docs/140.account-settings/020.api-tokens.md",9014],"037e2c34":[()=>n.e(7820).then(n.bind(n,16779)),"@site/docs/120.collaboration/030.share-base.md",16779],"03af2c79":[()=>n.e(6570).then(n.t.bind(n,52806,19)),"~docs/default/tag-tags-qr-code-af6.json",52806],"052736b6":[()=>n.e(7657).then(n.bind(n,76947)),"@site/docs/130.automation/020.webhook/040.actions-on-webhook.md",76947],"052c7f5b":[()=>n.e(3595).then(n.t.bind(n,88739,19)),"~docs/default/tag-tags-number-1d2.json",88739],"0834b429":[()=>n.e(1305).then(n.bind(n,5439)),"@site/docs/150.engineering/060.builds-and-releases.md",5439],"0908b333":[()=>n.e(6187).then(n.bind(n,50388)),"@site/docs/090.views/040.view-types/010.grid.md",50388],"0938fe36":[()=>n.e(7075).then(n.t.bind(n,36171,19)),"~docs/default/tag-tags-expanded-record-87b.json",36171],"09ceb1a0":[()=>n.e(4936).then(n.bind(n,51719)),"@site/versioned_docs/version-0.109.7/050.engineering/030.development-setup.md",51719],"0a7c5cbc":[()=>n.e(809).then(n.bind(n,30495)),"@site/docs/070.fields/040.field-types/060.formula/010.formula.md",30495],"0ac1e38e":[()=>n.e(5305).then(n.bind(n,59934)),"@site/docs/070.fields/040.field-types/060.formula/030.string-functions.md",59934],"0aea064e":[()=>n.e(7026).then(n.t.bind(n,16777,19)),"~docs/default/tag-tags-field-width-ece.json",16777],"0b819d8c":[()=>n.e(757).then(n.bind(n,62114)),"@site/docs/100.data-sources/030.sync-with-data-source.md",62114],"0b97ee01":[()=>n.e(1590).then(n.t.bind(n,30648,19)),"~docs/default/tag-tags-upload-681.json",30648],"0bd8cdc6":[()=>n.e(5707).then(n.t.bind(n,93713,19)),"~docs/default/tag-tags-roles-236.json",93713],"0c130525":[()=>n.e(604).then(n.bind(n,37456)),"@site/versioned_docs/version-0.109.7/020.getting-started/020.environment-variables.md",37456],"0cab3fcc":[()=>n.e(3479).then(n.bind(n,14503)),"@site/docs/130.automation/020.webhook/020.create-webhook.md",14503],"0d8de604":[()=>n.e(2092).then(n.t.bind(n,34398,19)),"~docs/default/tag-tags-custom-types-2ab.json",34398],"0ecc5e11":[()=>n.e(117).then(n.bind(n,98369)),"@site/docs/020.getting-started/040.keyboard-shortcuts.md",98369],"0f4f52c0":[()=>n.e(5822).then(n.bind(n,92005)),"@site/docs/050.tables/060.actions-on-table.md",92005],"0f6b8098":[()=>n.e(6157).then(n.bind(n,32934)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/020.table-operations.md",32934],"105fb6bf":[()=>n.e(5408).then(n.t.bind(n,93163,19)),"~docs/default/tag-tags-url-4e5.json",93163],"10779e77":[()=>n.e(1990).then(n.bind(n,40695)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/140.share-view.md",40695],"10b0edf0":[()=>n.e(8946).then(n.t.bind(n,27046,19)),"~docs/default/tag-tags-checkbox-bb0.json",27046],"11d84c26":[()=>n.e(5336).then(n.bind(n,45896)),"@site/docs/070.fields/040.field-types/010.text-based/030.email.md",45896],"14095bfc":[()=>n.e(5922).then(n.bind(n,98184)),"@site/docs/070.fields/040.field-types/030.select-based/010.single-select.md",98184],"147f12f7":[()=>n.e(4918).then(n.t.bind(n,28123,19)),"~docs/default/tag-tags-rename-649.json",28123],"14d6025d":[()=>n.e(7539).then(n.bind(n,76561)),"@site/docs/070.fields/040.field-types/070.date-time-based/020.date.md",76561],"16d5baaf":[()=>n.e(65).then(n.bind(n,11560)),"@site/docs/070.fields/040.field-types/040.links-based/010.links.md",11560],"177ad845":[()=>n.e(8252).then(n.t.bind(n,2035,19)),"~docs/default/tag-tags-formula-732.json",2035],17896441:[()=>Promise.all([n.e(532),n.e(9059),n.e(7918)]).then(n.bind(n,94776)),"@theme/DocItem",94776],"181f370e":[()=>n.e(6786).then(n.t.bind(n,48513,19)),"~docs/default/tag-tags-barcode-e70.json",48513],"18c96d41":[()=>n.e(9449).then(n.bind(n,6458)),"@site/docs/070.fields/040.field-types/060.formula/050.conditional-expressions.md",6458],"1970c274":[()=>n.e(1140).then(n.bind(n,43292)),"@site/docs/090.views/040.view-types/040.kanban.md",43292],"1a4e3797":[()=>Promise.all([n.e(532),n.e(118),n.e(4496),n.e(7920)]).then(n.bind(n,84496)),"@theme/SearchPage",84496],"1b14dca8":[()=>n.e(5404).then(n.bind(n,22831)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/170.account-settings.md",22831],"1b3738fb":[()=>n.e(8149).then(n.bind(n,90806)),"@site/docs/150.engineering/040.unit-testing.md",90806],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,81299)),"@theme/DocPage",81299],"1c2ab191":[()=>n.e(5518).then(n.t.bind(n,84031,19)),"~docs/default/tag-tags-overview-08f.json",84031],"1e403fb7":[()=>n.e(4796).then(n.bind(n,86461)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/160.views.md",86461],"1e898359":[()=>n.e(8704).then(n.bind(n,99544)),"@site/versioned_docs/version-0.109.7/010.index.md",99544],"1fb5f022":[()=>n.e(9020).then(n.bind(n,65566)),"@site/docs/100.data-sources/010.data-source-overview.md",65566],"20e10381":[()=>n.e(405).then(n.bind(n,37577)),"@site/docs/990.FAQs.md",37577],"2226a1e9":[()=>n.e(9552).then(n.bind(n,76013)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/070.lookup.md",76013],"224f2b0f":[()=>n.e(2562).then(n.bind(n,84961)),"@site/docs/070.fields/040.field-types/060.formula/020.numeric-functions.md",84961],22580739:[()=>n.e(1796).then(n.bind(n,70629)),"@site/docs/060.table-operations/020.field-operations.md",70629],"22aab9a3":[()=>n.e(6907).then(n.bind(n,82255)),"@site/docs/070.fields/040.field-types/010.text-based/010.single-line-text.md",82255],23371042:[()=>n.e(5375).then(n.t.bind(n,67337,19)),"~docs/default/tag-tags-members-c98.json",67337],"2556c3eb":[()=>n.e(8).then(n.t.bind(n,91033,19)),"~docs/default/tag-tags-pg-aeb.json",91033],"25ad7bcb":[()=>n.e(8789).then(n.bind(n,35837)),"@site/docs/120.collaboration/020.base-collaboration.md",35837],"275c23cd":[()=>n.e(2289).then(n.t.bind(n,55513,19)),"~docs/default/tag-tags-remove-4d3.json",55513],"276e2b0f":[()=>n.e(2439).then(n.t.bind(n,41962,19)),"~docs/default/tag-tags-edit-81a.json",41962],"278121a5":[()=>n.e(2556).then(n.bind(n,28117)),"@site/docs/080.records/030.expand-record.md",28117],"27b20541":[()=>n.e(3238).then(n.t.bind(n,47090,19)),"~docs/default/tag-tags-gallery-view-170.json",47090],"2888903d":[()=>n.e(3259).then(n.bind(n,69357)),"@site/docs/080.records/020.create-record.md",69357],"2a1ace55":[()=>n.e(4829).then(n.bind(n,12484)),"@site/docs/020.getting-started/050.self-hosted/010.installation.md",12484],"2a42d1d2":[()=>n.e(2636).then(n.bind(n,7212)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/200.import-airtable-to-sql-database-within-a-minute-for-free.md",7212],"2b263996":[()=>n.e(403).then(n.bind(n,81360)),"@site/docs/130.automation/020.webhook/010.webhook-overview.md",81360],"2bb712de":[()=>n.e(1771).then(n.bind(n,49826)),"@site/docs/090.views/025.share-view.md",49826],"2c8a1eac":[()=>n.e(5631).then(n.t.bind(n,71411,19)),"~docs/default/tag-tags-kanban-view-4dc.json",71411],"2cbe0325":[()=>n.e(1245).then(n.bind(n,53499)),"@site/docs/070.fields/040.field-types/070.date-time-based/030.time.md",53499],"2d5bd7a1":[()=>n.e(7666).then(n.t.bind(n,18972,19)),"~docs/default/tag-tags-duplicate-74f.json",18972],"2d8eea4e":[()=>n.e(5837).then(n.t.bind(n,65804,19)),"~docs/default/tag-tags-invite-e9c.json",65804],"2eb4ec02":[()=>n.e(1876).then(n.bind(n,75509)),"@site/docs/040.bases/020.create-base.md",75509],"2f81bee2":[()=>n.e(9677).then(n.t.bind(n,13316,19)),"~docs/default/tag-tags-connect-2c6.json",13316],"300d0b41":[()=>n.e(2534).then(n.t.bind(n,48717,19)),"~docs/default/tag-tags-enable-429.json",48717],"310a23cf":[()=>n.e(1878).then(n.bind(n,29518)),"@site/docs/070.fields/010.fields-overview.md",29518],"319e5695":[()=>n.e(9542).then(n.bind(n,9607)),"@site/docs/030.workspaces/040.actions-on-workspace.md",9607],"31befc1e":[()=>n.e(6799).then(n.bind(n,35958)),"@site/docs/070.fields/040.field-types/060.formula/040.date-functions.md",35958],"31f9cd1a":[()=>n.e(7130).then(n.bind(n,59269)),"@site/docs/070.fields/040.field-types/020.numerical/030.percent.md",59269],"324eab63":[()=>n.e(2642).then(n.t.bind(n,59555,19)),"~docs/default/tag-tags-record-height-a1f.json",59555],"32e0f401":[()=>n.e(9789).then(n.bind(n,54093)),"@site/docs/050.tables/020.create-table.md",54093],"34b71ab6":[()=>n.e(4364).then(n.bind(n,47445)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/040.column-types.md",47445],"35af5afe":[()=>n.e(1179).then(n.bind(n,88161)),"@site/docs/070.fields/040.field-types/030.select-based/020.multi-select.md",88161],"3615d78a":[()=>n.e(3590).then(n.bind(n,75124)),"@site/versioned_docs/version-0.109.7/050.engineering/060.builds-and-releases.md",75124],"3720c009":[()=>Promise.all([n.e(532),n.e(3751)]).then(n.bind(n,76495)),"@theme/DocTagsListPage",76495],"3721b01f":[()=>n.e(1471).then(n.t.bind(n,83769,19)),"/Users/rajuudava/NocoDB/nocodb/packages/noco-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],"3a7c0cf6":[()=>n.e(2533).then(n.t.bind(n,30637,19)),"~docs/default/tag-tags-collaboration-e59.json",30637],"3aad05b1":[()=>n.e(3512).then(n.t.bind(n,28445,19)),"~docs/default/tag-tags-account-settings-aab.json",28445],"3ac80ba6":[()=>n.e(3515).then(n.t.bind(n,21504,19)),"~docs/default/tag-tags-data-sources-eaa.json",21504],"3da8114c":[()=>n.e(3338).then(n.t.bind(n,54021,19)),"~docs/default/tag-tags-workspaces-5c0.json",54021],"408139c4":[()=>n.e(8248).then(n.bind(n,96262)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/180.languages.md",96262],"4145e2b1":[()=>n.e(7530).then(n.t.bind(n,66146,19)),"~docs/default/tag-tags-hide-1ea.json",66146],44655909:[()=>n.e(2406).then(n.t.bind(n,89104,19)),"~docs/default/tag-tags-text-based-types-00e.json",89104],"44eb4aec":[()=>n.e(9693).then(n.t.bind(n,36718,19)),"~docs/default/tag-tags-share-base-a82.json",36718],"458ed5bd":[()=>n.e(2237).then(n.t.bind(n,61774,19)),"~docs/default/tag-tags-dashboard-5a9.json",61774],"45c1aab2":[()=>n.e(4304).then(n.t.bind(n,70005,19)),"~docs/default/tag-tags-email-e39.json",70005],"468275e6":[()=>n.e(6844).then(n.t.bind(n,29968,19)),"~docs/default/tag-tags-my-sql-0ad.json",29968],"4bab5100":[()=>n.e(5207).then(n.bind(n,73414)),"@site/docs/040.bases/050.base-collaboration.md",73414],"4c6b0ee7":[()=>n.e(6325).then(n.bind(n,74653)),"@site/docs/020.getting-started/050.self-hosted/020.environment-variables.md",74653],"4cd0de40":[()=>n.e(1730).then(n.bind(n,5848)),"@site/docs/070.fields/040.field-types/050.custom-types/050.barcode.md",5848],"4ed1386c":[()=>n.e(1753).then(n.bind(n,23868)),"@site/versioned_docs/version-0.109.7/060.FAQs.md",23868],"4efb7b3c":[()=>n.e(3755).then(n.bind(n,1106)),"@site/docs/150.engineering/010.architecture.md",1106],"4f577b60":[()=>n.e(2922).then(n.t.bind(n,55913,19)),"~docs/default/tag-tags-records-b8e.json",55913],"523749b8":[()=>n.e(9508).then(n.t.bind(n,64307,19)),"~docs/default/tag-tags-search-b34.json",64307],"524f61e0":[()=>n.e(5150).then(n.t.bind(n,84549,19)),"~docs/default/tag-tags-delete-7ef.json",84549],"525fa7b4":[()=>n.e(3469).then(n.bind(n,694)),"@site/docs/070.fields/040.field-types/050.custom-types/040.QR-code.md",694],"529c2981":[()=>n.e(7152).then(n.bind(n,46494)),"@site/versioned_docs/version-0.109.7/040.developer-resources/040.webhooks.md",46494],"52df1fbb":[()=>n.e(8395).then(n.bind(n,57549)),"@site/docs/150.engineering/020.repository-structure.md",57549],"5436f7e6":[()=>n.e(3939).then(n.bind(n,26869)),"@site/versioned_docs/version-0.109.7/040.developer-resources/050.upload-via-api.md",26869],55156658:[()=>n.e(1802).then(n.t.bind(n,80394,19)),"~docs/default/tag-tags-lookup-6f6.json",80394],"55403ccd":[()=>n.e(2650).then(n.bind(n,91059)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/090.formulas.md",91059],"55960ee5":[()=>n.e(4121).then(n.t.bind(n,88070,19)),"~docs/default/tags-list-current-prop-15a.json",88070],"576905f1":[()=>n.e(5772).then(n.bind(n,27072)),"@site/docs/120.collaboration/050.oss-specific-details.md",27072],"58354ae8":[()=>n.e(3164).then(n.bind(n,83679)),"@site/docs/150.engineering/030.development-setup.md",83679],"5af3a857":[()=>n.e(8838).then(n.bind(n,80131)),"@site/docs/090.views/040.view-types/030.form.md",80131],"5c9cf4c7":[()=>n.e(5187).then(n.bind(n,21984)),"@site/versioned_docs/version-0.109.7/020.getting-started/010.installation.md",21984],"5ccd3149":[()=>n.e(4033).then(n.bind(n,43452)),"@site/versioned_docs/version-0.109.7/050.engineering/050.playwright.md",43452],"5dcc9f57":[()=>n.e(7395).then(n.t.bind(n,34861,19)),"~docs/default/tag-tags-table-operations-01a.json",34861],"5eaf3a75":[()=>n.e(1944).then(n.bind(n,49571)),"@site/docs/030.workspaces/020.create-workspace.md",49571],"603e048e":[()=>n.e(7700).then(n.bind(n,57742)),"@site/docs/070.fields/030.display-value.md",57742],"60b8b995":[()=>n.e(3463).then(n.bind(n,47611)),"@site/docs/070.fields/040.field-types/070.date-time-based/040.duration.md",47611],"615746d5":[()=>n.e(678).then(n.bind(n,79584)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/050.code-snippets.md",79584],"61a3d417":[()=>n.e(6591).then(n.bind(n,35713)),"@site/docs/090.views/020.create-view.md",35713],"61af7884":[()=>n.e(7621).then(n.t.bind(n,51261,19)),"~docs/default/tag-tags-form-view-94e.json",51261],"6233b6dc":[()=>n.e(7647).then(n.t.bind(n,10950,19)),"~docs/default/tag-tags-excel-813.json",10950],"6485a1bf":[()=>n.e(6640).then(n.t.bind(n,81067,19)),"~docs/default/tag-tags-multi-select-0c8.json",81067],"6502d10a":[()=>n.e(6078).then(n.t.bind(n,92793,19)),"~docs/default/tag-tags-long-text-c05.json",92793],"654123f4":[()=>n.e(9933).then(n.bind(n,49893)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/100.primary-key.md",49893],"68fa8000":[()=>n.e(7549).then(n.bind(n,83407)),"@site/docs/070.fields/040.field-types/050.custom-types/070.specific-db-type.md",83407],"69895f00":[()=>n.e(4289).then(n.bind(n,37087)),"@site/docs/070.fields/040.field-types/020.numerical/020.decimal.md",37087],"69bed9e5":[()=>n.e(3869).then(n.bind(n,99300)),"@site/docs/060.table-operations/060.row-height.md",99300],"69bee932":[()=>n.e(3454).then(n.bind(n,55286)),"@site/docs/020.getting-started/030.terminologies.md",55286],"6a0eac6b":[()=>n.e(4158).then(n.bind(n,18637)),"@site/docs/060.table-operations/080.download.md",18637],"6a105426":[()=>n.e(7592).then(n.t.bind(n,51533,19)),"~docs/default/tag-tags-getting-started-564.json",51533],"6a2ab9d1":[()=>n.e(8537).then(n.t.bind(n,40264,19)),"~docs/default/tag-tags-date-time-e33.json",40264],"6aee45b4":[()=>n.e(8535).then(n.t.bind(n,61777,19)),"~docs/default/tag-tags-select-based-types-ed9.json",61777],"6d2f78d9":[()=>n.e(254).then(n.bind(n,78688)),"@site/docs/070.fields/040.field-types/050.custom-types/080.json.md",78688],"6f7695df":[()=>n.e(3011).then(n.bind(n,29486)),"@site/docs/040.bases/060.share-base.md",29486],"6fe2a298":[()=>n.e(7219).then(n.bind(n,13773)),"@site/versioned_docs/version-0.109.7/050.engineering/020.repository-structure.md",13773],70424118:[()=>n.e(332).then(n.t.bind(n,15231,19)),"~docs/default/tag-tags-engineering-fa4.json",15231],"7077aad6":[()=>n.e(5971).then(n.bind(n,49437)),"@site/docs/100.data-sources/040.actions-on-data-sources.md",49437],"709f8fcb":[()=>n.e(4021).then(n.bind(n,31250)),"@site/docs/100.data-sources/020.connect-to-data-source.md",31250],"70efa42e":[()=>n.e(4815).then(n.bind(n,53683)),"@site/docs/050.tables/030.create-table-via-import.md",53683],71540999:[()=>n.e(8954).then(n.bind(n,98336)),"@site/versioned_docs/version-0.109.7/050.engineering/010.architecture.md",98336],"71f80183":[()=>n.e(924).then(n.t.bind(n,5068,19)),"~docs/default/tag-tags-shortcuts-33c.json",5068],"775b7682":[()=>n.e(949).then(n.t.bind(n,32263,19)),"~docs/default/tag-tags-ui-acl-4e2.json",32263],"78ec2f26":[()=>n.e(2673).then(n.t.bind(n,44413,19)),"~docs/default/tag-tags-relations-887.json",44413],"7a733070":[()=>n.e(4223).then(n.t.bind(n,46864,19)),"~docs/default/tag-tags-share-2bf.json",46864],"7c4b6d90":[()=>n.e(5580).then(n.bind(n,2891)),"@site/docs/150.engineering/080.writing-docs.md",2891],"7ce1d842":[()=>n.e(3998).then(n.bind(n,32723)),"@site/docs/050.tables/010.table-overview.md",32723],"7d5d7de6":[()=>n.e(5017).then(n.t.bind(n,40108,19)),"~docs/default/tag-tags-rating-b67.json",40108],"7dce83b4":[()=>n.e(1193).then(n.bind(n,77848)),"@site/docs/060.table-operations/070.search.md",77848],"7e18769a":[()=>n.e(4177).then(n.bind(n,18329)),"@site/docs/090.views/090.actions-on-view.md",18329],"81862c4f":[()=>n.e(1499).then(n.bind(n,14919)),"@site/versioned_docs/version-0.109.7/040.developer-resources/010.accessing-apis.md",14919],"824dfda1":[()=>n.e(4570).then(n.bind(n,89138)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/210.usage-information.md",89138],"832fc58a":[()=>n.e(9874).then(n.t.bind(n,56038,19)),"~docs/default/tag-tags-comments-65d.json",56038],83533542:[()=>n.e(3878).then(n.t.bind(n,83762,19)),"~docs/default/tag-tags-fields-8d7.json",83762],"83cf658d":[()=>n.e(3845).then(n.t.bind(n,43678,19)),"~docs/default/tag-tags-rest-ap-is-150.json",43678],"8498c216":[()=>n.e(3381).then(n.bind(n,62162)),"@site/docs/150.engineering/070.translation.md",62162],"855d76bb":[()=>n.e(6141).then(n.bind(n,58640)),"@site/versioned_docs/version-0.109.7/040.developer-resources/030.sdk.md",58640],"86fc9284":[()=>n.e(305).then(n.bind(n,73842)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/060.link-to-another-record.md",73842],"87e9af65":[()=>n.e(4507).then(n.bind(n,16371)),"@site/versioned_docs/version-0.109.7/020.getting-started/040.demos.md",16371],"88cc213e":[()=>n.e(4193).then(n.bind(n,46015)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/130.share-base.md",46015],"8a8a6f17":[()=>n.e(9060).then(n.bind(n,82187)),"@site/docs/060.table-operations/040.sort.md",82187],"8f10bd27":[()=>n.e(8916).then(n.t.bind(n,60107,19)),"~docs/default/tag-tags-sync-082.json",60107],"9040003c":[()=>n.e(8511).then(n.bind(n,68312)),"@site/docs/120.collaboration/010.workspace-collaboration.md",68312],"90e43058":[()=>n.e(7023).then(n.bind(n,79613)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/150.keyboard-maneuver.md",79613],"9329f711":[()=>n.e(753).then(n.bind(n,20980)),"@site/docs/140.account-settings/010.profile-page.md",20980],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],95677701:[()=>n.e(1174).then(n.t.bind(n,44721,19)),"~docs/default/tag-tags-group-by-a64.json",44721],"95a14fd1":[()=>n.e(9518).then(n.bind(n,52119)),"@site/docs/060.table-operations/050.group-by.md",52119],"985d43d9":[()=>n.e(1196).then(n.t.bind(n,12322,19)),"~docs/default/tag-tags-tables-709.json",12322],"98de4c79":[()=>n.e(9893).then(n.bind(n,97481)),"@site/docs/070.fields/040.field-types/060.formula/015.operators.md",97481],"9906c9d3":[()=>n.e(7661).then(n.bind(n,25300)),"@site/docs/150.engineering/050.playwright.md",25300],"9995b2be":[()=>n.e(9850).then(n.t.bind(n,63067,19)),"~docs/default/tag-tags-table-e12.json",63067],"99f674e5":[()=>n.e(4307).then(n.bind(n,17813)),"@site/docs/080.records/070.actions-on-record.md",17813],"9a52cc21":[()=>n.e(3062).then(n.t.bind(n,10804,19)),"~docs/default/tag-tags-numerical-types-03c.json",10804],"9a7e4ef7":[()=>n.e(1961).then(n.t.bind(n,20467,19)),"~docs/default/tag-tags-bases-eae.json",20467],"9aad2067":[()=>n.e(4769).then(n.t.bind(n,41536,19)),"~docs/default/tag-tags-phone-number-f26.json",41536],"9c78149d":[()=>n.e(8381).then(n.bind(n,51959)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/250.audit.md",51959],"9d4ed5ff":[()=>n.e(4333).then(n.bind(n,84673)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/110.display-value.md",84673],"9db0d30f":[()=>n.e(6090).then(n.t.bind(n,54041,19)),"~docs/default/tag-tags-webhook-2b4.json",54041],"9db7fbd6":[()=>n.e(481).then(n.t.bind(n,93717,19)),"~docs/default/tag-tags-import-be6.json",93717],"9dfd9b1b":[()=>n.e(9279).then(n.bind(n,28507)),"@site/docs/080.records/010.records-overview.md",28507],"9e1a113d":[()=>n.e(6999).then(n.t.bind(n,45182,19)),"~docs/default/tag-tags-display-value-bc0.json",45182],"9e7567e1":[()=>n.e(7823).then(n.t.bind(n,27737,19)),"~docs/default/tag-tags-rollup-019.json",27737],a15cb612:[()=>n.e(9042).then(n.t.bind(n,42822,19)),"~docs/default/tag-tags-disable-39c.json",42822],a18f2535:[()=>n.e(6928).then(n.bind(n,61492)),"@site/docs/120.collaboration/040.share-view.md",61492],a43060c8:[()=>n.e(3185).then(n.bind(n,96)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/220.links.md",96],a47b7f3a:[()=>n.e(2550).then(n.bind(n,60406)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/010.dashboard.md",60406],a71ccd0b:[()=>n.e(9383).then(n.t.bind(n,51259,19)),"~docs/default/tag-tags-csv-1df.json",51259],a7294da8:[()=>n.e(3312).then(n.bind(n,60707)),"@site/versioned_docs/version-0.109.7/040.developer-resources/020.rest-apis.md",60707],a9993c14:[()=>n.e(8750).then(n.t.bind(n,86137,19)),"~docs/default/tag-tags-table-details-781.json",86137],aa1c05f4:[()=>n.e(3151).then(n.t.bind(n,81164,19)),"~docs/default/tag-tags-visibility-602.json",81164],abbfc25c:[()=>n.e(6713).then(n.bind(n,59661)),"@site/docs/070.fields/040.field-types/040.links-based/020.lookup.md",59661],ae730630:[()=>n.e(9707).then(n.bind(n,90229)),"@site/docs/060.table-operations/010.overview.md",90229],ae9857c7:[()=>n.e(6714).then(n.t.bind(n,86741,19)),"~docs/default/version-0-109-7-metadata-prop-007.json",86741],b2206ab4:[()=>n.e(2384).then(n.t.bind(n,96212,19)),"~docs/default/tag-tags-primary-key-b79.json",96212],b22d161b:[()=>n.e(2773).then(n.bind(n,54954)),"@site/docs/010.index.md",54954],b3347e58:[()=>n.e(345).then(n.t.bind(n,12068,19)),"~docs/default/tag-tags-specific-db-type-32a.json",12068],b444d910:[()=>n.e(8958).then(n.bind(n,85507)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/030.column-operations.md",85507],b6006dd7:[()=>n.e(1676).then(n.t.bind(n,81921,19)),"~docs/default/tag-tags-multi-fields-editor-8da.json",81921],b65801cb:[()=>n.e(274).then(n.t.bind(n,69609,19)),"~docs/default/tag-tags-decimal-575.json",69609],b7abf355:[()=>n.e(3857).then(n.bind(n,17569)),"@site/docs/030.workspaces/010.workspace-overview.md",17569],ba1d2c5b:[()=>n.e(6779).then(n.bind(n,80390)),"@site/docs/040.bases/040.import-base-from-airtable.md",80390],bb516362:[()=>n.e(9721).then(n.bind(n,26238)),"@site/docs/090.views/010.views-overview.md",26238],bb53f532:[()=>n.e(1641).then(n.bind(n,69619)),"@site/docs/070.fields/040.field-types/010.text-based/050.url.md",69619],bd02e23f:[()=>n.e(2606).then(n.bind(n,33872)),"@site/docs/070.fields/040.field-types/010.text-based/040.phonenumber.md",33872],c1501dcb:[()=>n.e(7096).then(n.bind(n,36802)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/120.sync-schema.md",36802],c1a34d6e:[()=>n.e(636).then(n.bind(n,55619)),"@site/docs/070.fields/040.field-types/050.custom-types/060.geometry.md",55619],c1dfffdd:[()=>n.e(4166).then(n.bind(n,9933)),"@site/docs/070.fields/040.field-types/010.text-based/020.long-text.md",9933],c2accac3:[()=>n.e(2874).then(n.t.bind(n,78942,19)),"~docs/default/tag-tags-percent-363.json",78942],c42aaec2:[()=>n.e(92).then(n.t.bind(n,30780,19)),"~docs/default/tag-tags-permissions-6c8.json",30780],c76e097b:[()=>n.e(1461).then(n.bind(n,48496)),"@site/docs/110.roles-and-permissions/010.roles-permissions-overview.md",48496],c7dc53b4:[()=>n.e(4513).then(n.t.bind(n,54830,19)),"~docs/default/tag-tags-single-select-bec.json",54830],c93390fb:[()=>n.e(4660).then(n.t.bind(n,83256,19)),"~docs/default/tag-tags-links-based-types-1b0.json",83256],cb2030df:[()=>n.e(5334).then(n.bind(n,20563)),"@site/docs/070.fields/040.field-types/030.select-based/030.rating.md",20563],cc44517e:[()=>n.e(1949).then(n.bind(n,93124)),"@site/versioned_docs/version-0.109.7/050.engineering/070.translation.md",93124],cc9fede1:[()=>n.e(5228).then(n.t.bind(n,10958,19)),"~docs/default/tag-tags-download-e65.json",10958],cd3c4207:[()=>n.e(485).then(n.bind(n,67047)),"@site/docs/070.fields/040.field-types/040.links-based/030.rollup.md",67047],cd725ea4:[()=>n.e(800).then(n.bind(n,87956)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/080.rollup.md",87956],cfe1d2b7:[()=>n.e(8466).then(n.t.bind(n,58137,19)),"/Users/rajuudava/NocoDB/nocodb/packages/noco-docs/.docusaurus/docusaurus-theme-search-typesense/default/plugin-route-context-module-100.json",58137],d01bd8c5:[()=>n.e(8820).then(n.bind(n,98962)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/260.project-settings.md",98962],d3abb5b7:[()=>n.e(3447).then(n.t.bind(n,85920,19)),"~docs/default/tag-tags-grid-view-58b.json",85920],d427e024:[()=>n.e(5413).then(n.bind(n,6314)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/240.meta-management.md",6314],d5451361:[()=>n.e(1205).then(n.t.bind(n,69033,19)),"~docs/default/tag-tags-profile-4e1.json",69033],d65a8f51:[()=>n.e(5221).then(n.t.bind(n,3763,19)),"~docs/default/tag-tags-swagger-d9c.json",3763],d69d4db4:[()=>n.e(333).then(n.t.bind(n,29497,19)),"~docs/default/tag-tags-reorder-7e5.json",29497],d767d123:[()=>n.e(4743).then(n.bind(n,54004)),"@site/docs/040.bases/070.actions-on-base.md",54004],d94fff3f:[()=>n.e(1705).then(n.t.bind(n,71730,19)),"~docs/default/tag-tags-audit-43c.json",71730],d96af704:[()=>n.e(2582).then(n.t.bind(n,30004,19)),"~docs/default/tag-tags-show-hide-a0d.json",30004],d9e65f56:[()=>n.e(8379).then(n.t.bind(n,42899,19)),"~docs/default/tag-tags-api-tokens-bbe.json",42899],da4f93ee:[()=>n.e(4882).then(n.bind(n,47221)),"@site/docs/070.fields/050.multi-fields-editor.md",47221],dc1c5b3c:[()=>n.e(1576).then(n.t.bind(n,50742,19)),"~docs/default/tag-tags-json-a8a.json",50742],ded49de4:[()=>n.e(9868).then(n.bind(n,34654)),"@site/docs/070.fields/040.field-types/070.date-time-based/010.date-time.md",34654],df203c0f:[()=>n.e(9924).then(n.bind(n,615)),"@theme/DocTagDocListPage",615],df59b4b5:[()=>n.e(3914).then(n.t.bind(n,36756,19)),"~docs/default/tag-tags-single-line-text-64e.json",36756],e11b3e19:[()=>n.e(5650).then(n.bind(n,60920)),"@site/docs/070.fields/040.field-types/030.select-based/020.checkbox.md",60920],e12d67b0:[()=>n.e(9554).then(n.t.bind(n,61359,19)),"~docs/default/tag-tags-views-e28.json",61359],e28b0c4f:[()=>n.e(8880).then(n.bind(n,85216)),"@site/versioned_docs/version-0.109.7/020.getting-started/030.upgrading.md",85216],e302cfc9:[()=>n.e(1313).then(n.bind(n,10847)),"@site/docs/065.table-details/table-details-overview.md",10847],e3120721:[()=>n.e(1120).then(n.t.bind(n,23388,19)),"~docs/default/tag-tags-filter-2d5.json",23388],e4367861:[()=>n.e(6263).then(n.bind(n,37634)),"@site/docs/050.tables/040.import-data-into-existing-table.md",37634],e4e12989:[()=>n.e(8e3).then(n.bind(n,86301)),"@site/versioned_docs/version-0.109.7/050.engineering/040.unit-testing.md",86301],e55064b4:[()=>n.e(4341).then(n.bind(n,73412)),"@site/docs/070.fields/040.field-types/020.numerical/040.currency.md",73412],e56fdc78:[()=>n.e(9069).then(n.bind(n,89e3)),"@site/docs/020.getting-started/050.self-hosted/030.upgrading.md",89e3],e5a54c1b:[()=>n.e(7283).then(n.bind(n,39110)),"@site/docs/070.fields/040.field-types/020.numerical/010.number.md",39110],e631982f:[()=>n.e(5055).then(n.bind(n,12957)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/190.expanded-form.md",12957],e68614dc:[()=>n.e(771).then(n.bind(n,19809)),"@site/docs/070.fields/040.field-types/050.custom-types/010.attachment.md",19809],e68e0fff:[()=>n.e(6859).then(n.t.bind(n,27048,19)),"~docs/default/tag-tags-cover-image-028.json",27048],e8cbe097:[()=>n.e(1635).then(n.t.bind(n,73637,19)),"~docs/default/tag-tags-field-types-c13.json",73637],eb689018:[()=>n.e(4851).then(n.bind(n,91431)),"@site/docs/040.bases/010.base-overview.md",91431],ebb99180:[()=>n.e(346).then(n.bind(n,61669)),"@site/docs/090.views/040.view-types/020.gallery.md",61669],ec135315:[()=>n.e(6125).then(n.bind(n,16033)),"@site/docs/070.fields/020.primary-key.md",16033],f0eb83f3:[()=>n.e(2862).then(n.bind(n,76908)),"@site/versioned_docs/version-0.109.7/030.setup-and-usages/230.team-and-auth.md",76908],f4191957:[()=>n.e(5381).then(n.t.bind(n,56319,19)),"~docs/default/tag-tags-external-21b.json",56319],f4472a32:[()=>n.e(9123).then(n.t.bind(n,90399,19)),"~docs/default/tag-tags-attachment-9e2.json",90399],f472468a:[()=>n.e(9214).then(n.t.bind(n,90290,19)),"~docs/default/tag-tags-links-d71.json",90290],f6aad64f:[()=>n.e(853).then(n.t.bind(n,63825,19)),"~docs/default/tag-tags-open-source-031.json",63825],f7d905ba:[()=>n.e(7746).then(n.bind(n,67268)),"@site/docs/060.table-operations/030.filter.md",67268],f9241299:[()=>n.e(3521).then(n.bind(n,67452)),"@site/docs/120.collaboration/010.collaboration-overview.md",67452],f9538193:[()=>n.e(7235).then(n.t.bind(n,96482,19)),"~docs/default/tag-tags-currency-68c.json",96482],fb12fd2d:[()=>n.e(1416).then(n.t.bind(n,82648,19)),"~docs/default/tag-tags-sort-d14.json",82648],fb5c685c:[()=>n.e(1067).then(n.t.bind(n,86841,19)),"~docs/default/tag-tags-create-2ad.json",86841],fb60c522:[()=>n.e(5407).then(n.bind(n,94065)),"@site/docs/070.fields/060.actions-on-field.md",94065],fc37d7fe:[()=>n.e(9485).then(n.t.bind(n,8673,19)),"~docs/default/tag-tags-member-3b6.json",8673],fe112e79:[()=>n.e(2776).then(n.bind(n,57117)),"@site/docs/030.workspaces/030.workspace-collaboration.md",57117]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(5304),d=n(69656);function p(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4248).then(n.bind(n,74248)),modules:["@theme/NotFound"],webpack:()=>[74248],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=s[`${e}-${t}`],p={},f=[],m=[],g=(0,u.Z)(o);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=l[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:c,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const s=n.split(".");s.slice(0,-1).forEach((e=>{o=o[e]})),o[s[s.length-1]]=a}));const s=i.__comp;delete i.__comp;const l=i.__context;return delete i.__context,r.createElement(d.z,{value:l},r.createElement(s,(0,a.Z)({},i,n)))}})}const f=[{path:"/search",component:p("/search","729"),exact:!0},{path:"/tags",component:p("/tags","9ec"),exact:!0},{path:"/tags/account-settings",component:p("/tags/account-settings","c9b"),exact:!0},{path:"/tags/api-tokens",component:p("/tags/api-tokens","e4c"),exact:!0},{path:"/tags/attachment",component:p("/tags/attachment","959"),exact:!0},{path:"/tags/audit",component:p("/tags/audit","d88"),exact:!0},{path:"/tags/barcode",component:p("/tags/barcode","bde"),exact:!0},{path:"/tags/bases",component:p("/tags/bases","22f"),exact:!0},{path:"/tags/checkbox",component:p("/tags/checkbox","f4b"),exact:!0},{path:"/tags/collaboration",component:p("/tags/collaboration","38c"),exact:!0},{path:"/tags/comments",component:p("/tags/comments","255"),exact:!0},{path:"/tags/connect",component:p("/tags/connect","8b5"),exact:!0},{path:"/tags/cover-image",component:p("/tags/cover-image","ca1"),exact:!0},{path:"/tags/create",component:p("/tags/create","92a"),exact:!0},{path:"/tags/csv",component:p("/tags/csv","b29"),exact:!0},{path:"/tags/currency",component:p("/tags/currency","c91"),exact:!0},{path:"/tags/custom-types",component:p("/tags/custom-types","147"),exact:!0},{path:"/tags/dashboard",component:p("/tags/dashboard","99f"),exact:!0},{path:"/tags/data-sources",component:p("/tags/data-sources","2ad"),exact:!0},{path:"/tags/date-time",component:p("/tags/date-time","f46"),exact:!0},{path:"/tags/decimal",component:p("/tags/decimal","448"),exact:!0},{path:"/tags/delete",component:p("/tags/delete","8b9"),exact:!0},{path:"/tags/disable",component:p("/tags/disable","2d1"),exact:!0},{path:"/tags/display-value",component:p("/tags/display-value","590"),exact:!0},{path:"/tags/download",component:p("/tags/download","c31"),exact:!0},{path:"/tags/duplicate",component:p("/tags/duplicate","d13"),exact:!0},{path:"/tags/edit",component:p("/tags/edit","86a"),exact:!0},{path:"/tags/email",component:p("/tags/email","d37"),exact:!0},{path:"/tags/enable",component:p("/tags/enable","3cb"),exact:!0},{path:"/tags/engineering",component:p("/tags/engineering","347"),exact:!0},{path:"/tags/excel",component:p("/tags/excel","b1a"),exact:!0},{path:"/tags/expanded-record",component:p("/tags/expanded-record","115"),exact:!0},{path:"/tags/external",component:p("/tags/external","a29"),exact:!0},{path:"/tags/field-types",component:p("/tags/field-types","428"),exact:!0},{path:"/tags/field-width",component:p("/tags/field-width","411"),exact:!0},{path:"/tags/fields",component:p("/tags/fields","a5c"),exact:!0},{path:"/tags/filter",component:p("/tags/filter","e3c"),exact:!0},{path:"/tags/form-view",component:p("/tags/form-view","44c"),exact:!0},{path:"/tags/formula",component:p("/tags/formula","e41"),exact:!0},{path:"/tags/gallery-view",component:p("/tags/gallery-view","602"),exact:!0},{path:"/tags/geometry",component:p("/tags/geometry","903"),exact:!0},{path:"/tags/getting-started",component:p("/tags/getting-started","90c"),exact:!0},{path:"/tags/grid-view",component:p("/tags/grid-view","608"),exact:!0},{path:"/tags/group-by",component:p("/tags/group-by","a8c"),exact:!0},{path:"/tags/hide",component:p("/tags/hide","cb5"),exact:!0},{path:"/tags/import",component:p("/tags/import","563"),exact:!0},{path:"/tags/invite",component:p("/tags/invite","d63"),exact:!0},{path:"/tags/json",component:p("/tags/json","a19"),exact:!0},{path:"/tags/kanban-view",component:p("/tags/kanban-view","6d9"),exact:!0},{path:"/tags/links",component:p("/tags/links","840"),exact:!0},{path:"/tags/links-based-types",component:p("/tags/links-based-types","7df"),exact:!0},{path:"/tags/long-text",component:p("/tags/long-text","b67"),exact:!0},{path:"/tags/lookup",component:p("/tags/lookup","a2f"),exact:!0},{path:"/tags/member",component:p("/tags/member","748"),exact:!0},{path:"/tags/members",component:p("/tags/members","656"),exact:!0},{path:"/tags/multi-fields-editor",component:p("/tags/multi-fields-editor","cc5"),exact:!0},{path:"/tags/multi-select",component:p("/tags/multi-select","9aa"),exact:!0},{path:"/tags/my-sql",component:p("/tags/my-sql","dbb"),exact:!0},{path:"/tags/number",component:p("/tags/number","e29"),exact:!0},{path:"/tags/numerical-types",component:p("/tags/numerical-types","910"),exact:!0},{path:"/tags/open-source",component:p("/tags/open-source","5f2"),exact:!0},{path:"/tags/overview",component:p("/tags/overview","c58"),exact:!0},{path:"/tags/percent",component:p("/tags/percent","6e9"),exact:!0},{path:"/tags/permissions",component:p("/tags/permissions","8d7"),exact:!0},{path:"/tags/pg",component:p("/tags/pg","f50"),exact:!0},{path:"/tags/phone-number",component:p("/tags/phone-number","3e9"),exact:!0},{path:"/tags/primary-key",component:p("/tags/primary-key","3c7"),exact:!0},{path:"/tags/productivity-hacks",component:p("/tags/productivity-hacks","8cf"),exact:!0},{path:"/tags/profile",component:p("/tags/profile","8b9"),exact:!0},{path:"/tags/qr-code",component:p("/tags/qr-code","0db"),exact:!0},{path:"/tags/rating",component:p("/tags/rating","b13"),exact:!0},{path:"/tags/record-height",component:p("/tags/record-height","efb"),exact:!0},{path:"/tags/records",component:p("/tags/records","dc5"),exact:!0},{path:"/tags/relations",component:p("/tags/relations","643"),exact:!0},{path:"/tags/remove",component:p("/tags/remove","1e1"),exact:!0},{path:"/tags/rename",component:p("/tags/rename","542"),exact:!0},{path:"/tags/reorder",component:p("/tags/reorder","162"),exact:!0},{path:"/tags/rest-ap-is",component:p("/tags/rest-ap-is","a49"),exact:!0},{path:"/tags/roles",component:p("/tags/roles","9c1"),exact:!0},{path:"/tags/rollup",component:p("/tags/rollup","174"),exact:!0},{path:"/tags/search",component:p("/tags/search","93b"),exact:!0},{path:"/tags/select-based-types",component:p("/tags/select-based-types","ff3"),exact:!0},{path:"/tags/share",component:p("/tags/share","fcd"),exact:!0},{path:"/tags/share-base",component:p("/tags/share-base","ddd"),exact:!0},{path:"/tags/shortcuts",component:p("/tags/shortcuts","ac3"),exact:!0},{path:"/tags/show-hide",component:p("/tags/show-hide","2c1"),exact:!0},{path:"/tags/single-line-text",component:p("/tags/single-line-text","eb2"),exact:!0},{path:"/tags/single-select",component:p("/tags/single-select","318"),exact:!0},{path:"/tags/sort",component:p("/tags/sort","ee6"),exact:!0},{path:"/tags/specific-db-type",component:p("/tags/specific-db-type","059"),exact:!0},{path:"/tags/swagger",component:p("/tags/swagger","9b1"),exact:!0},{path:"/tags/sync",component:p("/tags/sync","a81"),exact:!0},{path:"/tags/table",component:p("/tags/table","327"),exact:!0},{path:"/tags/table-details",component:p("/tags/table-details","150"),exact:!0},{path:"/tags/table-operations",component:p("/tags/table-operations","03c"),exact:!0},{path:"/tags/tables",component:p("/tags/tables","03c"),exact:!0},{path:"/tags/text-based-types",component:p("/tags/text-based-types","08a"),exact:!0},{path:"/tags/ui-acl",component:p("/tags/ui-acl","232"),exact:!0},{path:"/tags/upload",component:p("/tags/upload","2d5"),exact:!0},{path:"/tags/url",component:p("/tags/url","0dc"),exact:!0},{path:"/tags/views",component:p("/tags/views","7aa"),exact:!0},{path:"/tags/visibility",component:p("/tags/visibility","95f"),exact:!0},{path:"/tags/webhook",component:p("/tags/webhook","d1d"),exact:!0},{path:"/tags/workspaces",component:p("/tags/workspaces","f31"),exact:!0},{path:"/0.109.7",component:p("/0.109.7","223"),routes:[{path:"/0.109.7/",component:p("/0.109.7/","eab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/developer-resources/accessing-apis",component:p("/0.109.7/developer-resources/accessing-apis","238"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/developer-resources/rest-apis",component:p("/0.109.7/developer-resources/rest-apis","06e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/developer-resources/sdk",component:p("/0.109.7/developer-resources/sdk","9da"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/developer-resources/upload-via-api",component:p("/0.109.7/developer-resources/upload-via-api","ae3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/developer-resources/webhooks",component:p("/0.109.7/developer-resources/webhooks","93d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/architecture",component:p("/0.109.7/engineering/architecture","a78"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/builds-and-releases",component:p("/0.109.7/engineering/builds-and-releases","107"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/development-setup",component:p("/0.109.7/engineering/development-setup","9b9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/playwright",component:p("/0.109.7/engineering/playwright","b87"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/repository-structure",component:p("/0.109.7/engineering/repository-structure","6f0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/translation",component:p("/0.109.7/engineering/translation","02f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/engineering/unit-testing",component:p("/0.109.7/engineering/unit-testing","d31"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/FAQs",component:p("/0.109.7/FAQs","79f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/getting-started/demos",component:p("/0.109.7/getting-started/demos","8e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/getting-started/environment-variables",component:p("/0.109.7/getting-started/environment-variables","bea"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/getting-started/installation",component:p("/0.109.7/getting-started/installation","af5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/getting-started/upgrading",component:p("/0.109.7/getting-started/upgrading","5e6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/account-settings",component:p("/0.109.7/setup-and-usages/account-settings","72e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/audit",component:p("/0.109.7/setup-and-usages/audit","492"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/code-snippets",component:p("/0.109.7/setup-and-usages/code-snippets","e68"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/column-operations",component:p("/0.109.7/setup-and-usages/column-operations","b69"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/column-types",component:p("/0.109.7/setup-and-usages/column-types","a5e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/dashboard",component:p("/0.109.7/setup-and-usages/dashboard","ee2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/display-value",component:p("/0.109.7/setup-and-usages/display-value","a30"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/expanded-form",component:p("/0.109.7/setup-and-usages/expanded-form","b88"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/formulas",component:p("/0.109.7/setup-and-usages/formulas","bd0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free",component:p("/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free","371"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/keyboard-maneuver",component:p("/0.109.7/setup-and-usages/keyboard-maneuver","881"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/languages",component:p("/0.109.7/setup-and-usages/languages","b49"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/link-to-another-record",component:p("/0.109.7/setup-and-usages/link-to-another-record","6c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/links",component:p("/0.109.7/setup-and-usages/links","0dc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/lookup",component:p("/0.109.7/setup-and-usages/lookup","96d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/meta-management",component:p("/0.109.7/setup-and-usages/meta-management","254"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/primary-key",component:p("/0.109.7/setup-and-usages/primary-key","0c4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/project-settings",component:p("/0.109.7/setup-and-usages/project-settings","dc0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/rollup",component:p("/0.109.7/setup-and-usages/rollup","64f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/share-base",component:p("/0.109.7/setup-and-usages/share-base","29d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/share-view",component:p("/0.109.7/setup-and-usages/share-view","ec1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/sync-schema",component:p("/0.109.7/setup-and-usages/sync-schema","852"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/table-operations",component:p("/0.109.7/setup-and-usages/table-operations","364"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/team-and-auth",component:p("/0.109.7/setup-and-usages/team-and-auth","b5f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/usage-information",component:p("/0.109.7/setup-and-usages/usage-information","b21"),exact:!0,sidebar:"tutorialSidebar"},{path:"/0.109.7/setup-and-usages/views",component:p("/0.109.7/setup-and-usages/views","303"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","c5d"),routes:[{path:"/",component:p("/","f1a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/account-settings/api-tokens",component:p("/account-settings/api-tokens","fe5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/account-settings/oss-specific-details",component:p("/account-settings/oss-specific-details","95b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/account-settings/profile-page",component:p("/account-settings/profile-page","6de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/automation/webhook/actions-on-webhook",component:p("/automation/webhook/actions-on-webhook","ec5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/automation/webhook/create-webhook",component:p("/automation/webhook/create-webhook","7f4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/automation/webhook/webhook-overview",component:p("/automation/webhook/webhook-overview","bdc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/actions-on-base",component:p("/bases/actions-on-base","d6b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/base-collaboration",component:p("/bases/base-collaboration","1d1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/base-overview",component:p("/bases/base-overview","305"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/create-base",component:p("/bases/create-base","b75"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/import-base-from-airtable",component:p("/bases/import-base-from-airtable","e12"),exact:!0,sidebar:"tutorialSidebar"},{path:"/bases/share-base",component:p("/bases/share-base","626"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/base-collaboration",component:p("/collaboration/base-collaboration","dab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/collaboration-overview",component:p("/collaboration/collaboration-overview","d7f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/oss-specific-details",component:p("/collaboration/oss-specific-details","43a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/share-base",component:p("/collaboration/share-base","1db"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/share-view",component:p("/collaboration/share-view","ef9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/collaboration/workspace-collaboration",component:p("/collaboration/workspace-collaboration","952"),exact:!0,sidebar:"tutorialSidebar"},{path:"/data-sources/actions-on-data-sources",component:p("/data-sources/actions-on-data-sources","9cb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/data-sources/connect-to-data-source",component:p("/data-sources/connect-to-data-source","e61"),exact:!0,sidebar:"tutorialSidebar"},{path:"/data-sources/data-source-overview",component:p("/data-sources/data-source-overview","f29"),exact:!0,sidebar:"tutorialSidebar"},{path:"/data-sources/sync-with-data-source",component:p("/data-sources/sync-with-data-source","8ff"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/architecture",component:p("/engineering/architecture","5c0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/builds-and-releases",component:p("/engineering/builds-and-releases","bb9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/development-setup",component:p("/engineering/development-setup","27a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/playwright",component:p("/engineering/playwright","09d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/repository-structure",component:p("/engineering/repository-structure","6fc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/translation",component:p("/engineering/translation","2dd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/unit-testing",component:p("/engineering/unit-testing","24a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/engineering/writing-docs",component:p("/engineering/writing-docs","4f2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/FAQs",component:p("/FAQs","828"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/actions-on-field",component:p("/fields/actions-on-field","f17"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/display-value",component:p("/fields/display-value","828"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/attachment",component:p("/fields/field-types/custom-types/attachment","06c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/barcode",component:p("/fields/field-types/custom-types/barcode","e35"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/geometry",component:p("/fields/field-types/custom-types/geometry","1a2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/json",component:p("/fields/field-types/custom-types/json","bea"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/QR-code",component:p("/fields/field-types/custom-types/QR-code","4e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/custom-types/specific-db-type",component:p("/fields/field-types/custom-types/specific-db-type","0cd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/date-time-based/date",component:p("/fields/field-types/date-time-based/date","725"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/date-time-based/date-time",component:p("/fields/field-types/date-time-based/date-time","836"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/date-time-based/duration",component:p("/fields/field-types/date-time-based/duration","94e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/date-time-based/time",component:p("/fields/field-types/date-time-based/time","d3c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/conditional-expressions",component:p("/fields/field-types/formula/conditional-expressions","5af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/date-functions",component:p("/fields/field-types/formula/date-functions","798"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/formula",component:p("/fields/field-types/formula/formula","576"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/numeric-functions",component:p("/fields/field-types/formula/numeric-functions","556"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/operators",component:p("/fields/field-types/formula/operators","d96"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/formula/string-functions",component:p("/fields/field-types/formula/string-functions","b5c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/links-based/links",component:p("/fields/field-types/links-based/links","487"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/links-based/lookup",component:p("/fields/field-types/links-based/lookup","861"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/links-based/rollup",component:p("/fields/field-types/links-based/rollup","1f5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/numerical/currency",component:p("/fields/field-types/numerical/currency","91a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/numerical/decimal",component:p("/fields/field-types/numerical/decimal","8cc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/numerical/number",component:p("/fields/field-types/numerical/number","d91"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/numerical/percent",component:p("/fields/field-types/numerical/percent","243"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/select-based/checkbox",component:p("/fields/field-types/select-based/checkbox","0c2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/select-based/multi-select",component:p("/fields/field-types/select-based/multi-select","626"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/select-based/rating",component:p("/fields/field-types/select-based/rating","9b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/select-based/single-select",component:p("/fields/field-types/select-based/single-select","e33"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/text-based/email",component:p("/fields/field-types/text-based/email","938"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/text-based/long-text",component:p("/fields/field-types/text-based/long-text","e24"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/text-based/phonenumber",component:p("/fields/field-types/text-based/phonenumber","a44"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/text-based/single-line-text",component:p("/fields/field-types/text-based/single-line-text","99f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/field-types/text-based/url",component:p("/fields/field-types/text-based/url","64a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/fields-overview",component:p("/fields/fields-overview","78a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/multi-fields-editor",component:p("/fields/multi-fields-editor","6e1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/fields/primary-key",component:p("/fields/primary-key","40d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/keyboard-shortcuts",component:p("/getting-started/keyboard-shortcuts","323"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/quick-start",component:p("/getting-started/quick-start","92c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/self-hosted/environment-variables",component:p("/getting-started/self-hosted/environment-variables","60e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/self-hosted/installation",component:p("/getting-started/self-hosted/installation","972"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/self-hosted/upgrading",component:p("/getting-started/self-hosted/upgrading","bfd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/terminologies",component:p("/getting-started/terminologies","b1a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/records/actions-on-record",component:p("/records/actions-on-record","632"),exact:!0,sidebar:"tutorialSidebar"},{path:"/records/create-record",component:p("/records/create-record","945"),exact:!0,sidebar:"tutorialSidebar"},{path:"/records/expand-record",component:p("/records/expand-record","72d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/records/records-overview",component:p("/records/records-overview","150"),exact:!0,sidebar:"tutorialSidebar"},{path:"/roles-and-permissions/roles-permissions-overview",component:p("/roles-and-permissions/roles-permissions-overview","57d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-details/table-details-overview",component:p("/table-details/table-details-overview","ae5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/download",component:p("/table-operations/download","8d4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/field-operations",component:p("/table-operations/field-operations","c3d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/filter",component:p("/table-operations/filter","96c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/group-by",component:p("/table-operations/group-by","893"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/overview",component:p("/table-operations/overview","bd0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/row-height",component:p("/table-operations/row-height","3c0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/search",component:p("/table-operations/search","ed7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/table-operations/sort",component:p("/table-operations/sort","209"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tables/actions-on-table",component:p("/tables/actions-on-table","05d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tables/create-table",component:p("/tables/create-table","b64"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tables/create-table-via-import",component:p("/tables/create-table-via-import","e6f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tables/import-data-into-existing-table",component:p("/tables/import-data-into-existing-table","d91"),exact:!0,sidebar:"tutorialSidebar"},{path:"/tables/table-overview",component:p("/tables/table-overview","046"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/actions-on-view",component:p("/views/actions-on-view","17e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/create-view",component:p("/views/create-view","2b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/share-view",component:p("/views/share-view","97d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/view-types/form",component:p("/views/view-types/form","252"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/view-types/gallery",component:p("/views/view-types/gallery","004"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/view-types/grid",component:p("/views/view-types/grid","c46"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/view-types/kanban",component:p("/views/view-types/kanban","b3f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/views/views-overview",component:p("/views/views-overview","ba9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/workspaces/actions-on-workspace",component:p("/workspaces/actions-on-workspace","cb7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/workspaces/create-workspace",component:p("/workspaces/create-workspace","d20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/workspaces/workspace-collaboration",component:p("/workspaces/workspace-collaboration","dd4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/workspaces/workspace-overview",component:p("/workspaces/workspace-overview","34e"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"*",component:p("*")}]},88121:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(67294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},90654:(e,t,n)=>{"use strict";var r=n(67294),a=n(73935),o=n(73727),i=n(70405),s=n(36136);const l=[n(30984),n(82251),n(79957),n(93878),n(98269),n(13538)];var c=n(50997),u=n(16550),d=n(18790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(87462),m=n(31514),g=n(39962),h=n(79524),b=n(20107),v=n(35463),y=n(40626),w=n(78181),k=n(60246),S=n(33647);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),a=function(){const{siteConfig:{url:e}}=(0,g.Z)(),{pathname:t}=(0,u.TH)();return e+(0,h.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function x(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(E,null),r.createElement(_,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var A=n(88121),L=n(80694);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),R("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function N(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class P extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?R("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=R("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),N(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(O,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}const I=P,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",j="__docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${j}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${j}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,g.Z)();return(0,r.useLayoutEffect)((()=>{window[F]=!1}),[]),r.createElement(r.Fragment,null,!s.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:D}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(z,null):null}function $(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,g.Z)(),i=(0,h.Z)(e),{htmlLang:s,direction:l}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:s,dir:l}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(73256);function H(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement(q.Z,null,r.createElement(L.M,null,r.createElement(A.t,null,r.createElement(p,null,r.createElement($,null),r.createElement(x,null),r.createElement(U,null),r.createElement(I,{location:T(t)},e)))))}var Z=n(16887);const G=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var V=n(5304);const W=new Set,Q=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Y={prefetch(e){if(!(e=>!K()&&!Q.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(Z).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,V.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!Q.has(e))(e)&&(Q.add(e),N(e))},X=Object.freeze(Y);if(s.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;N(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(H,null))),document.getElementById("__docusaurus"))}))}},80694:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(67294),a=n(36809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Latest","isLast":true,"path":"/","mainDocId":"index","docs":[{"id":"account-settings/api-tokens","path":"/account-settings/api-tokens","sidebar":"tutorialSidebar"},{"id":"account-settings/oss-specific-details","path":"/account-settings/oss-specific-details","sidebar":"tutorialSidebar"},{"id":"account-settings/profile-page","path":"/account-settings/profile-page","sidebar":"tutorialSidebar"},{"id":"automation/webhook/actions-on-webhook","path":"/automation/webhook/actions-on-webhook","sidebar":"tutorialSidebar"},{"id":"automation/webhook/create-webhook","path":"/automation/webhook/create-webhook","sidebar":"tutorialSidebar"},{"id":"automation/webhook/webhook-overview","path":"/automation/webhook/webhook-overview","sidebar":"tutorialSidebar"},{"id":"bases/actions-on-base","path":"/bases/actions-on-base","sidebar":"tutorialSidebar"},{"id":"bases/base-collaboration","path":"/bases/base-collaboration","sidebar":"tutorialSidebar"},{"id":"bases/base-overview","path":"/bases/base-overview","sidebar":"tutorialSidebar"},{"id":"bases/create-base","path":"/bases/create-base","sidebar":"tutorialSidebar"},{"id":"bases/import-base-from-airtable","path":"/bases/import-base-from-airtable","sidebar":"tutorialSidebar"},{"id":"bases/share-base","path":"/bases/share-base","sidebar":"tutorialSidebar"},{"id":"collaboration/base-collaboration","path":"/collaboration/base-collaboration","sidebar":"tutorialSidebar"},{"id":"collaboration/collaboration-overview","path":"/collaboration/collaboration-overview","sidebar":"tutorialSidebar"},{"id":"collaboration/oss-specific-details","path":"/collaboration/oss-specific-details","sidebar":"tutorialSidebar"},{"id":"collaboration/share-base","path":"/collaboration/share-base","sidebar":"tutorialSidebar"},{"id":"collaboration/share-view","path":"/collaboration/share-view","sidebar":"tutorialSidebar"},{"id":"collaboration/workspace-collaboration","path":"/collaboration/workspace-collaboration","sidebar":"tutorialSidebar"},{"id":"data-sources/actions-on-data-sources","path":"/data-sources/actions-on-data-sources","sidebar":"tutorialSidebar"},{"id":"data-sources/connect-to-data-source","path":"/data-sources/connect-to-data-source","sidebar":"tutorialSidebar"},{"id":"data-sources/data-source-overview","path":"/data-sources/data-source-overview","sidebar":"tutorialSidebar"},{"id":"data-sources/sync-with-data-source","path":"/data-sources/sync-with-data-source","sidebar":"tutorialSidebar"},{"id":"engineering/architecture","path":"/engineering/architecture","sidebar":"tutorialSidebar"},{"id":"engineering/builds-and-releases","path":"/engineering/builds-and-releases","sidebar":"tutorialSidebar"},{"id":"engineering/development-setup","path":"/engineering/development-setup","sidebar":"tutorialSidebar"},{"id":"engineering/playwright","path":"/engineering/playwright","sidebar":"tutorialSidebar"},{"id":"engineering/repository-structure","path":"/engineering/repository-structure","sidebar":"tutorialSidebar"},{"id":"engineering/translation","path":"/engineering/translation","sidebar":"tutorialSidebar"},{"id":"engineering/unit-testing","path":"/engineering/unit-testing","sidebar":"tutorialSidebar"},{"id":"engineering/writing-docs","path":"/engineering/writing-docs","sidebar":"tutorialSidebar"},{"id":"FAQs","path":"/FAQs","sidebar":"tutorialSidebar"},{"id":"fields/actions-on-field","path":"/fields/actions-on-field","sidebar":"tutorialSidebar"},{"id":"fields/display-value","path":"/fields/display-value","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/attachment","path":"/fields/field-types/custom-types/attachment","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/barcode","path":"/fields/field-types/custom-types/barcode","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/geometry","path":"/fields/field-types/custom-types/geometry","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/json","path":"/fields/field-types/custom-types/json","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/QR-code","path":"/fields/field-types/custom-types/QR-code","sidebar":"tutorialSidebar"},{"id":"fields/field-types/custom-types/specific-db-type","path":"/fields/field-types/custom-types/specific-db-type","sidebar":"tutorialSidebar"},{"id":"fields/field-types/date-time-based/date","path":"/fields/field-types/date-time-based/date","sidebar":"tutorialSidebar"},{"id":"fields/field-types/date-time-based/date-time","path":"/fields/field-types/date-time-based/date-time","sidebar":"tutorialSidebar"},{"id":"fields/field-types/date-time-based/duration","path":"/fields/field-types/date-time-based/duration","sidebar":"tutorialSidebar"},{"id":"fields/field-types/date-time-based/time","path":"/fields/field-types/date-time-based/time","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/conditional-expressions","path":"/fields/field-types/formula/conditional-expressions","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/date-functions","path":"/fields/field-types/formula/date-functions","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/formula","path":"/fields/field-types/formula/formula","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/numeric-functions","path":"/fields/field-types/formula/numeric-functions","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/operators","path":"/fields/field-types/formula/operators","sidebar":"tutorialSidebar"},{"id":"fields/field-types/formula/string-functions","path":"/fields/field-types/formula/string-functions","sidebar":"tutorialSidebar"},{"id":"fields/field-types/links-based/links","path":"/fields/field-types/links-based/links","sidebar":"tutorialSidebar"},{"id":"fields/field-types/links-based/lookup","path":"/fields/field-types/links-based/lookup","sidebar":"tutorialSidebar"},{"id":"fields/field-types/links-based/rollup","path":"/fields/field-types/links-based/rollup","sidebar":"tutorialSidebar"},{"id":"fields/field-types/numerical/currency","path":"/fields/field-types/numerical/currency","sidebar":"tutorialSidebar"},{"id":"fields/field-types/numerical/decimal","path":"/fields/field-types/numerical/decimal","sidebar":"tutorialSidebar"},{"id":"fields/field-types/numerical/number","path":"/fields/field-types/numerical/number","sidebar":"tutorialSidebar"},{"id":"fields/field-types/numerical/percent","path":"/fields/field-types/numerical/percent","sidebar":"tutorialSidebar"},{"id":"fields/field-types/select-based/checkbox","path":"/fields/field-types/select-based/checkbox","sidebar":"tutorialSidebar"},{"id":"fields/field-types/select-based/multi-select","path":"/fields/field-types/select-based/multi-select","sidebar":"tutorialSidebar"},{"id":"fields/field-types/select-based/rating","path":"/fields/field-types/select-based/rating","sidebar":"tutorialSidebar"},{"id":"fields/field-types/select-based/single-select","path":"/fields/field-types/select-based/single-select","sidebar":"tutorialSidebar"},{"id":"fields/field-types/text-based/email","path":"/fields/field-types/text-based/email","sidebar":"tutorialSidebar"},{"id":"fields/field-types/text-based/long-text","path":"/fields/field-types/text-based/long-text","sidebar":"tutorialSidebar"},{"id":"fields/field-types/text-based/phonenumber","path":"/fields/field-types/text-based/phonenumber","sidebar":"tutorialSidebar"},{"id":"fields/field-types/text-based/single-line-text","path":"/fields/field-types/text-based/single-line-text","sidebar":"tutorialSidebar"},{"id":"fields/field-types/text-based/url","path":"/fields/field-types/text-based/url","sidebar":"tutorialSidebar"},{"id":"fields/fields-overview","path":"/fields/fields-overview","sidebar":"tutorialSidebar"},{"id":"fields/multi-fields-editor","path":"/fields/multi-fields-editor","sidebar":"tutorialSidebar"},{"id":"fields/primary-key","path":"/fields/primary-key","sidebar":"tutorialSidebar"},{"id":"getting-started/keyboard-shortcuts","path":"/getting-started/keyboard-shortcuts","sidebar":"tutorialSidebar"},{"id":"getting-started/quick-start","path":"/getting-started/quick-start","sidebar":"tutorialSidebar"},{"id":"getting-started/self-hosted/environment-variables","path":"/getting-started/self-hosted/environment-variables","sidebar":"tutorialSidebar"},{"id":"getting-started/self-hosted/installation","path":"/getting-started/self-hosted/installation","sidebar":"tutorialSidebar"},{"id":"getting-started/self-hosted/upgrading","path":"/getting-started/self-hosted/upgrading","sidebar":"tutorialSidebar"},{"id":"getting-started/terminologies","path":"/getting-started/terminologies","sidebar":"tutorialSidebar"},{"id":"index","path":"/","sidebar":"tutorialSidebar"},{"id":"records/actions-on-record","path":"/records/actions-on-record","sidebar":"tutorialSidebar"},{"id":"records/create-record","path":"/records/create-record","sidebar":"tutorialSidebar"},{"id":"records/expand-record","path":"/records/expand-record","sidebar":"tutorialSidebar"},{"id":"records/records-overview","path":"/records/records-overview","sidebar":"tutorialSidebar"},{"id":"roles-and-permissions/roles-permissions-overview","path":"/roles-and-permissions/roles-permissions-overview","sidebar":"tutorialSidebar"},{"id":"table-details/table-details-overview","path":"/table-details/table-details-overview","sidebar":"tutorialSidebar"},{"id":"table-operations/download","path":"/table-operations/download","sidebar":"tutorialSidebar"},{"id":"table-operations/field-operations","path":"/table-operations/field-operations","sidebar":"tutorialSidebar"},{"id":"table-operations/filter","path":"/table-operations/filter","sidebar":"tutorialSidebar"},{"id":"table-operations/group-by","path":"/table-operations/group-by","sidebar":"tutorialSidebar"},{"id":"table-operations/overview","path":"/table-operations/overview","sidebar":"tutorialSidebar"},{"id":"table-operations/row-height","path":"/table-operations/row-height","sidebar":"tutorialSidebar"},{"id":"table-operations/search","path":"/table-operations/search","sidebar":"tutorialSidebar"},{"id":"table-operations/sort","path":"/table-operations/sort","sidebar":"tutorialSidebar"},{"id":"tables/actions-on-table","path":"/tables/actions-on-table","sidebar":"tutorialSidebar"},{"id":"tables/create-table","path":"/tables/create-table","sidebar":"tutorialSidebar"},{"id":"tables/create-table-via-import","path":"/tables/create-table-via-import","sidebar":"tutorialSidebar"},{"id":"tables/import-data-into-existing-table","path":"/tables/import-data-into-existing-table","sidebar":"tutorialSidebar"},{"id":"tables/table-overview","path":"/tables/table-overview","sidebar":"tutorialSidebar"},{"id":"views/actions-on-view","path":"/views/actions-on-view","sidebar":"tutorialSidebar"},{"id":"views/create-view","path":"/views/create-view","sidebar":"tutorialSidebar"},{"id":"views/share-view","path":"/views/share-view","sidebar":"tutorialSidebar"},{"id":"views/view-types/form","path":"/views/view-types/form","sidebar":"tutorialSidebar"},{"id":"views/view-types/gallery","path":"/views/view-types/gallery","sidebar":"tutorialSidebar"},{"id":"views/view-types/grid","path":"/views/view-types/grid","sidebar":"tutorialSidebar"},{"id":"views/view-types/kanban","path":"/views/view-types/kanban","sidebar":"tutorialSidebar"},{"id":"views/views-overview","path":"/views/views-overview","sidebar":"tutorialSidebar"},{"id":"workspaces/actions-on-workspace","path":"/workspaces/actions-on-workspace","sidebar":"tutorialSidebar"},{"id":"workspaces/create-workspace","path":"/workspaces/create-workspace","sidebar":"tutorialSidebar"},{"id":"workspaces/workspace-collaboration","path":"/workspaces/workspace-collaboration","sidebar":"tutorialSidebar"},{"id":"workspaces/workspace-overview","path":"/workspaces/workspace-overview","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/","label":"index"}}}},{"name":"0.109.7","label":"0.109.7 - Old UI","isLast":false,"path":"/0.109.7","mainDocId":"index","docs":[{"id":"developer-resources/accessing-apis","path":"/0.109.7/developer-resources/accessing-apis","sidebar":"tutorialSidebar"},{"id":"developer-resources/rest-apis","path":"/0.109.7/developer-resources/rest-apis","sidebar":"tutorialSidebar"},{"id":"developer-resources/sdk","path":"/0.109.7/developer-resources/sdk","sidebar":"tutorialSidebar"},{"id":"developer-resources/upload-via-api","path":"/0.109.7/developer-resources/upload-via-api","sidebar":"tutorialSidebar"},{"id":"developer-resources/webhooks","path":"/0.109.7/developer-resources/webhooks","sidebar":"tutorialSidebar"},{"id":"engineering/architecture","path":"/0.109.7/engineering/architecture","sidebar":"tutorialSidebar"},{"id":"engineering/builds-and-releases","path":"/0.109.7/engineering/builds-and-releases","sidebar":"tutorialSidebar"},{"id":"engineering/development-setup","path":"/0.109.7/engineering/development-setup","sidebar":"tutorialSidebar"},{"id":"engineering/playwright","path":"/0.109.7/engineering/playwright","sidebar":"tutorialSidebar"},{"id":"engineering/repository-structure","path":"/0.109.7/engineering/repository-structure","sidebar":"tutorialSidebar"},{"id":"engineering/translation","path":"/0.109.7/engineering/translation","sidebar":"tutorialSidebar"},{"id":"engineering/unit-testing","path":"/0.109.7/engineering/unit-testing","sidebar":"tutorialSidebar"},{"id":"FAQs","path":"/0.109.7/FAQs","sidebar":"tutorialSidebar"},{"id":"getting-started/demos","path":"/0.109.7/getting-started/demos","sidebar":"tutorialSidebar"},{"id":"getting-started/environment-variables","path":"/0.109.7/getting-started/environment-variables","sidebar":"tutorialSidebar"},{"id":"getting-started/installation","path":"/0.109.7/getting-started/installation","sidebar":"tutorialSidebar"},{"id":"getting-started/upgrading","path":"/0.109.7/getting-started/upgrading","sidebar":"tutorialSidebar"},{"id":"index","path":"/0.109.7/","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/account-settings","path":"/0.109.7/setup-and-usages/account-settings","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/audit","path":"/0.109.7/setup-and-usages/audit","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/code-snippets","path":"/0.109.7/setup-and-usages/code-snippets","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/column-operations","path":"/0.109.7/setup-and-usages/column-operations","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/column-types","path":"/0.109.7/setup-and-usages/column-types","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/dashboard","path":"/0.109.7/setup-and-usages/dashboard","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/display-value","path":"/0.109.7/setup-and-usages/display-value","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/expanded-form","path":"/0.109.7/setup-and-usages/expanded-form","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/formulas","path":"/0.109.7/setup-and-usages/formulas","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free","path":"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/keyboard-maneuver","path":"/0.109.7/setup-and-usages/keyboard-maneuver","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/languages","path":"/0.109.7/setup-and-usages/languages","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/link-to-another-record","path":"/0.109.7/setup-and-usages/link-to-another-record","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/links","path":"/0.109.7/setup-and-usages/links","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/lookup","path":"/0.109.7/setup-and-usages/lookup","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/meta-management","path":"/0.109.7/setup-and-usages/meta-management","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/primary-key","path":"/0.109.7/setup-and-usages/primary-key","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/project-settings","path":"/0.109.7/setup-and-usages/project-settings","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/rollup","path":"/0.109.7/setup-and-usages/rollup","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/share-base","path":"/0.109.7/setup-and-usages/share-base","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/share-view","path":"/0.109.7/setup-and-usages/share-view","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/sync-schema","path":"/0.109.7/setup-and-usages/sync-schema","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/table-operations","path":"/0.109.7/setup-and-usages/table-operations","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/team-and-auth","path":"/0.109.7/setup-and-usages/team-and-auth","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/usage-information","path":"/0.109.7/setup-and-usages/usage-information","sidebar":"tutorialSidebar"},{"id":"setup-and-usages/views","path":"/0.109.7/setup-and-usages/views","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/0.109.7/","label":"version-0.109.7/index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const l=JSON.parse('{"docusaurusVersion":"2.4.1","siteVersion":"1.1.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.1"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"},"docusaurus-plugin-image-zoom":{"type":"package","name":"plugin-image-zoom","version":"1.1.0"},"docusaurus-plugin-ideal-image":{"type":"package","name":"@docusaurus/plugin-ideal-image","version":"2.4.1"},"docusaurus-theme-search-typesense":{"type":"package","name":"docusaurus-theme-search-typesense","version":"0.12.0"}}}'),c={siteConfig:a.default,siteMetadata:l,globalData:o,i18n:i,codeTranslations:s},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},73256:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(67294),a=n(36136),o=n(31514),i=n(63905),s=n(66945);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(c,{error:t}))}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function u(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(s.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const d=e=>r.createElement(u,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},36136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},31514:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(70405);function o(e){return r.createElement(a.ql,e)}},83699:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(87462),a=n(67294),o=n(73727),i=n(63905),s=n(39962),l=n(2735),c=n(36136);const u=a.createContext({collectLink:()=>{}});var d=n(79524);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,s.Z)(),{withBaseUrl:k}=(0,d.C)(),S=(0,a.useContext)(u),_=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>_.current));const E=p||f;const x=(0,l.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&x&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,O=c.Z.canUseIntersectionObserver,N=(0,a.useRef)(),P=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!O&&x&&null!=T&&window.docusaurus.prefetch(T),()=>{O&&N.current&&N.current.disconnect()})),[N,T,O,x]);const I=T?.startsWith("#")??!1,D=!T||!x||I;return D||h||S.collectLink(T),D?a.createElement("a",(0,r.Z)({ref:_,href:T},E&&!x&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(R,(0,r.Z)({},v,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{_.current=e,O&&e&&x&&(N.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(N.current.unobserve(e),N.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),N.current.observe(e))},to:T},n&&{isActive:g,activeClassName:m}))}const f=a.forwardRef(p)},97325:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l,I:()=>s});var r=n(67294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function l(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const s=i({message:t,id:n});return r.createElement(r.Fragment,null,a(s,o))}},6875:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},2735:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},79524:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(67294),a=n(39962),o=n(2735);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},39962:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(80694);function o(){return(0,r.useContext)(a._)}},51048:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(88121);function o(){return(0,r.useContext)(a._)}},5304:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const s=a?`${a}.${o}`:o;r(i)?e(i,s):t[s]=i}))}(e),t}},69656:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(67294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},89871:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>b,gA:()=>f,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>p,yW:()=>h,gB:()=>g});var r=n(16550),a=n(39962),o=n(6875);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}function c(e,t){const n=l(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},d=()=>i("docusaurus-plugin-content-docs")??u,p=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=d(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,r.TH)();if(!t)return;return{activePlugin:t,activeVersion:l(t.pluginData,n)}}function g(e){return p(e).versions}function h(e){const t=p(e);return s(t)}function b(e){const t=p(e),{pathname:n}=(0,r.TH)();return c(t,n)}function v(e){const t=p(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:c(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},79957:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(74865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},82251:(e,t,n)=>{"use strict";n.r(t);var r=n(87410),a=n(36809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},14082:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},66945:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ct});var r=n(67294),a=n(86010),o=n(73256),i=n(35463),s=n(87462),l=n(16550),c=n(97325),u=n(43266);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:`#${d}`,onClick:a}),t))}var h=n(23702),b=n(78181);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(g,{className:v.skipToContent})}var w=n(20107),k=n(65830);function S(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const _={closeButton:"closeButton_CVFx"};function E(e){return r.createElement("button",(0,s.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",_.closeButton,e.className)}),r.createElement(S,{width:14,height:14,strokeWidth:3.1}))}const x={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,s.Z)({},e,{className:(0,a.Z)(x.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(E,{onClick:n,className:T.announcementBarClose}))}var L=n(60735),R=n(72957);var O=n(43768),N=n(53086);const P=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,N.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,O.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(P.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(P);if(!e)throw new O.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,N.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(9200),B=n(51048);function z(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const s=(0,B.Z)(),l=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!s&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!s,title:l,"aria-label":l,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),Z={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,F.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?Z.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(96811);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Q(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(S,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(G,{className:"margin-right--md"}),r.createElement(Q,null))}var Y=n(83699),X=n(79524),J=n(2735),ee=n(61500),te=n(14082);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:l,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const p=(0,X.Z)(a),f=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),g=i&&o&&!(0,J.Z)(o),h=l?{dangerouslySetInnerHTML:{__html:l}}:{children:r.createElement(r.Fragment,null,i,g&&r.createElement(te.Z,c&&{width:12,height:12}))};return o?r.createElement(Y.Z,(0,s.Z)({href:u?m:o},d,h)):r.createElement(Y.Z,(0,s.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,ee.F)(n,t.pathname):t.pathname.startsWith(f)},d,h))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,s.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,s.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,s.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(54639),se=n(69003),le=n(39962);function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!(0,ee.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ne,(0,s.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},l,{onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),l.children??l.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Be,(0,s.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,s.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),f()}}),c.children??c.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Be,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ue;return r.createElement(a,n)}var fe=n(40626);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const ge="iconLanguage_nlXk";var he=n(73935),be=n(97795);var ve=n(86854),ye=n(45987);function we(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var ke=n(36963),Se=["translations"],_e="Ctrl";var Ee=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=(0,ye.Z)(e,Se),i=a.buttonText,l=void 0===i?"Search":i,c=a.buttonAriaLabel,u=void 0===c?"Search":c,d=(0,r.useState)(null),p=(0,ve.Z)(d,2),f=p[0],m=p[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?m("\u2318"):m(_e))}),[]),r.createElement("button",(0,s.Z)({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(ke.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},l)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==f&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},f===_e?r.createElement(we,null):f),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),xe=n(60246);const Ce={button:{buttonText:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,c.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,c.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Te=null;function Ae(e){let{hit:t,children:n}=e;return r.createElement(Y.Z,{to:t.url},n)}function Le(e){let{state:t,onClose:n}=e;const{generateSearchPageLink:a}=(0,be.O)();return r.createElement(Y.Z,{to:a(t.query),onClick:n},r.createElement(c.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Re(e){let{contextualSearch:t,externalUrlRegex:a,...o}=e;const{siteMetadata:i}=(0,le.Z)(),c=function(){const{locale:e,tags:t}=(0,xe._q)(),n=`language:=${e}`;let r;return t.length>0&&(r=`docusaurus_tag:=[${t.join(",")}]`),[n,r].filter((e=>e)).join(" && ")}(),u=o.typesenseSearchParameters?.filter_by??"",d={filter_by:t?[c,u].filter((e=>e)).join(" && "):u,...o.typesenseSearchParameters},p=o.typesenseServerConfig,f=o.typesenseCollectionName,{withBaseUrl:m}=(0,X.C)(),g=(0,l.k6)(),h=(0,r.useRef)(null),b=(0,r.useRef)(null),[v,y]=(0,r.useState)(!1),[w,k]=(0,r.useState)(void 0),S=(0,r.useCallback)((()=>Te?Promise.resolve():Promise.all([Promise.all([n.e(118),n.e(6758),n.e(9964)]).then(n.bind(n,66758)),Promise.all([n.e(532),n.e(2664)]).then(n.bind(n,22664)),Promise.all([n.e(532),n.e(1144)]).then(n.bind(n,71144))]).then((e=>{let[{DocSearchModal:t}]=e;Te=t}))),[]),_=(0,r.useCallback)((()=>{S().then((()=>{h.current=document.createElement("div"),document.body.insertBefore(h.current,document.body.firstChild),y(!0)}))}),[S,y]),E=(0,r.useCallback)((()=>{y(!1),h.current?.remove()}),[y]),x=(0,r.useCallback)((e=>{S().then((()=>{y(!0),k(e.key)}))}),[S,y,k]),C=(0,r.useRef)({navigate(e){let{itemUrl:t}=e;(0,ee.F)(a,t)?window.location.href=t:g.push(t)}}).current,T=(0,r.useRef)((e=>e.map((e=>{if((0,ee.F)(a,e.url))return e;const t=new URL(e.url);return{...e,url:m(`${t.pathname}${t.hash}`)}})))).current,A=(0,r.useMemo)((()=>e=>r.createElement(Le,(0,s.Z)({},e,{onClose:E}))),[E]);return function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,i])}({isOpen:v,onOpen:_,onClose:E,onInput:x,searchButtonRef:b}),r.createElement(r.Fragment,null,r.createElement(Ee,{onTouchStart:S,onFocus:S,onMouseOver:S,onClick:_,ref:b,translations:Ce.button}),v&&Te&&h.current&&(0,he.createPortal)(r.createElement(Te,(0,s.Z)({onClose:E,initialScrollY:window.scrollY,initialQuery:w,navigator:C,transformItems:T,hitComponent:Ae},o.searchPagePath&&{resultsFooterComponent:A},o,{typesenseSearchParameters:d,typesenseServerConfig:p,typesenseCollectionName:f,placeholder:Ce.placeholder,translations:Ce.modal})),h.current))}function Oe(){const{siteConfig:e}=(0,le.Z)();return r.createElement(Re,e.themeConfig.typesense)}const Ne={searchBox:"searchBox_ZlJk"};function Pe(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,Ne.searchBox)},t)}var Ie=n(89871),De=n(78259);var Me=n(86409);const je=e=>e.docs.find((t=>t.id===e.mainDocId));const Fe={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,le.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,l.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,s.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:ge}),h),items:g}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(Pe,{className:n},r.createElement(Oe,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const s=i?"li":"div";return r.createElement(s,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ie.Iw)(a),l=(0,De.vY)(t,a);return null===l?null:r.createElement(oe,(0,s.Z)({exact:!0},o,{isActive:()=>i?.path===l.path||!!i?.sidebar&&i.sidebar===l.sidebar,label:n??l.id,to:l.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,Ie.Iw)(a),l=(0,De.oz)(t,a).link;if(!l)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,s.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??l.label,to:l.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,De.lO)(a)[0],l=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,s.Z)({},o,{label:l,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:p}=(0,l.TH)(),f=(0,Ie.Iw)(n),m=(0,Ie.gB)(n),{savePreferredVersionName:g}=(0,Me.J)(n),h=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??je(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),...i],b=(0,De.lO)(n)[0],v=t&&h.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&h.length>1?void 0:je(b).path;return h.length<=1?r.createElement(oe,(0,s.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,s.Z)({},u,{mobile:t,label:v,to:y,items:h,isActive:a?()=>!1:void 0}))}};function Be(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Fe[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function ze(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Be,(0,s.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ue(e){return r.createElement("button",(0,s.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function $e(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ue,{onClick:()=>t.hide()}),t.content)}function qe(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(j,{header:r.createElement(K,null),primaryMenu:r.createElement(ze,null),secondaryMenu:r.createElement($e,null)}):null}const He={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ze(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ge(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:s,isNavbarVisible:l}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-o.current,c=window.innerHeight;s&&i>=s?n(!1):i+c<l&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:s,"aria-label":(0,c.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[He.navbarHideable,!l&&He.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ze,{onClick:i.toggle}),r.createElement(qe,null))}var Ve=n(63905);const We={errorBoundaryError:"errorBoundaryError_a6uf"};function Qe(e){return r.createElement("button",(0,s.Z)({type:"button"},e),r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Ke(e){let{error:t}=e;const n=(0,Ve.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:We.errorBoundaryError},n)}class Ye extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Xe="right";function Je(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,s.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function et(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Je,null))}const tt={colorModeToggle:"colorModeToggle_DEke"};function nt(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ye,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Be,e)))))}function rt(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function at(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Xe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(rt,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(et,null),r.createElement(W,null),r.createElement(nt,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(nt,{items:a}),r.createElement(G,{className:tt.colorModeToggle}),!o&&r.createElement(Pe,null,r.createElement(Oe,null)))})}function ot(){return r.createElement(Ge,null,r.createElement(at,null))}function it(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...l}=t,c=(0,X.Z)(n),u=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Y.Z,(0,s.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},l),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function st(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(it,{item:t}))}function lt(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(st,{key:t,item:e})))))}function ct(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(lt,{key:t,column:e}))))}function ut(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function dt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(it,{item:t})}function pt(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(dt,{item:e}),t.length!==n+1&&r.createElement(ut,null))))))}function ft(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(ct,{columns:t}):r.createElement(pt,{links:t})}var mt=n(7909);const gt={footerLogoLink:"footerLogoLink_BH7S"};function ht(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(mt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function bt(e){let{logo:t}=e;return t.href?r.createElement(Y.Z,{href:t.href,className:gt.footerLogoLink,target:t.target},r.createElement(ht,{logo:t})):r.createElement(ht,{logo:t})}function vt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function yt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function wt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(yt,{style:o,links:n&&n.length>0&&r.createElement(ft,{links:n}),logo:a&&r.createElement(bt,{logo:a}),copyright:t&&r.createElement(vt,{copyright:t})})}const kt=r.memo(wt),St=(0,O.Qc)([F.S,k.pl,R.OC,Me.L5,i.VC,function(e){let{children:t}=e;return r.createElement(N.n2,null,r.createElement(L.M,null,r.createElement(I,null,t)))}]);function _t(e){let{children:t}=e;return r.createElement(St,null,t)}function Et(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(Qe,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Ke,{error:t})))))}const xt={mainWrapper:"mainWrapper_z2l0"};function Ct(e){const{children:t,noFooter:n,wrapperClassName:s,title:l,description:c}=e;return(0,b.t)(),r.createElement(_t,null,r.createElement(i.d,{title:l,description:c}),r.createElement(y,null),r.createElement(A,null),r.createElement(ot,null),r.createElement("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,xt.mainWrapper,s)},r.createElement(o.Z,{fallback:e=>r.createElement(Et,e)},t)),!n&&r.createElement(kt,null))}},96811:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(87462),a=n(67294),o=n(83699),i=n(79524),s=n(39962),l=n(20107),c=n(7909);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},s=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},s):s}function d(e){const{siteConfig:{title:t}}=(0,s.Z)(),{navbar:{title:n,logo:c}}=(0,l.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(c?.href||"/"),g=n?"":t,h=c?.alt??g;return a.createElement(o.Z,(0,r.Z)({to:m},f,c?.target&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:h,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},33647:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(67294),a=n(31514);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},7909:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(87462),a=n(67294),o=n(86010),i=n(51048),s=n(9200);const l={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,s.I)(),{sources:c,className:u,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(l.themedImage,l[`themedImage--${e}`],u)},p)))))}},54639:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>h});var r=n(87462),a=n(67294),o=n(36136),i=n(58986);const s="ease-in-out";function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??s}`,height:`${t}px`}}function l(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?c:u}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:l}=e;const c=(0,a.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),a.createElement(t,{ref:c,style:l?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(c.current,n),i?.(n))},className:s},r)}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[s,l]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&l(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:s})):null}function h(e){let{lazy:t,...n}=e;const r=t?g:m;return a.createElement(r,n)}},65830:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(67294),a=n(51048),o=n(92560),i=n(43768),s=n(20107);const l=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),u=()=>"true"===l.get(),d=e=>l.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},9200:(e,t,n)=>{"use strict";n.d(t,{I:()=>h,S:()=>g});var r=n(67294),a=n(36136),o=n(43768),i=n(92560),s=n(20107);const l=r.createContext(void 0),c="theme",u=(0,i.WA)(c),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{u.set(p(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(l.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(l);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},86409:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>h,Oh:()=>y});var r=n(67294),a=n(89871),o=n(6875),i=n(20107),s=n(78259),l=n(43768),c=n(92560);const u=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,c.WA)(u(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(u(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(u(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,s]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function h(e){let{children:t}=e;return s.cE?r.createElement(g,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function y(){const e=(0,a._r)(),[t]=b();function n(n){const r=e[n],{preferredVersionName:a}=t[n];return r.versions.find((e=>e.name===a))??null}const r=Object.keys(e);return Object.fromEntries(r.map((e=>[e,n(e)])))}},84432:(e,t,n)=>{"use strict";n.d(t,{V:()=>l,b:()=>s});var r=n(67294),a=n(43768);const o=Symbol("EmptyContext"),i=r.createContext(o);function s(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function l(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},60735:(e,t,n)=>{"use strict";n.d(t,{M:()=>d,e:()=>p});var r=n(67294),a=n(53086),o=n(13488),i=n(75238),s=n(20107),l=n(43768);const c=r.createContext(void 0);function u(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[l,c]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(l)return c(!1),!1}));const u=(0,r.useCallback)((()=>{c((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&c(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:l})),[e,n,u,l])}function d(e){let{children:t}=e;const n=u();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},53086:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>l,n2:()=>i});var r=n(67294),a=n(43768);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function s(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,s]=i,l=(0,a.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},78181:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(67294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},13488:(e,t,n)=>{"use strict";n.d(t,{i:()=>c});var r=n(67294),a=n(36136);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const l=!1;function c(){const[e,t]=(0,r.useState)((()=>l?"ssr":s()));return(0,r.useEffect)((()=>{function e(){t(s())}const n=l?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},23702:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},58986:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},78259:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>p,_F:()=>g,cE:()=>d,hI:()=>k,lO:()=>v,oz:()=>y,s1:()=>b,vY:()=>w});var r=n(67294),a=n(16550),o=n(18790),i=n(89871),s=n(86409),l=n(84432),c=n(33609),u=n(69003);const d=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,u.Mg)(e,t),m=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function h(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,u.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,u.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function b(){const e=(0,l.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?h({sidebarItems:e.items,pathname:t}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function y(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function w(e,t){const n=v(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,s=i.find((e=>(0,a.LX)(r.pathname,e)));if(!s)return null;const l=s.sidebar,c=l?n.docsSidebars[l]:void 0;return{docElement:(0,o.H)(i),sidebarName:l,sidebarItems:c}}},75238:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>s,_X:()=>l});var r=n(67294),a=n(16550),o=n(61688),i=n(43768);function s(e){!function(e){const t=(0,a.k6)(),n=(0,i.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,a.k6)();return(0,o.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},33609:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},35463:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>u,VC:()=>f});var r=n(67294),a=n(86010),o=n(31514),i=n(69656);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(79524),c=n(39962);function u(e){let{title:t,description:n,keywords:a,image:i,children:s}=e;const u=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),s)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),s=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:s},r.createElement(o.Z,null,r.createElement("html",{className:s})),n)}function f(e){let{children:t}=e;const n=s(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},43768:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>c,Ql:()=>l,i6:()=>s,zX:()=>o});var r=n(67294);const a=n(36136).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function l(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},61500:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>r})},69003:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(67294),a=n(50997),o=n(39962);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},72957:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>l,RF:()=>d,o5:()=>p});var r=n(67294),a=n(36136),o=n(51048),i=n(43768);const s=r.createContext(void 0);function l(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(s.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},60246:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>l,os:()=>s});var r=n(89871),a=n(39962),o=n(86409);const i="default";function s(e,t){return`docs-${e}-${t}`}function l(){const{i18n:e}=(0,a.Z)(),t=(0,r._r)(),n=(0,r.WS)(),l=(0,o.Oh)();const c=[i,...Object.keys(t).map((function(e){const r=n?.activePlugin.pluginId===e?n.activeVersion:void 0,a=l[e],o=t[e].versions.find((e=>e.isLast));return s(e,(r??a??o).name)}))];return{locale:e.currentLocale,tags:c}}},92560:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>d,WA:()=>u});var r=n(67294),a=n(61688);const o="localStorage";function i(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function s(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const c={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=s(t?.persistence);return null===n?c:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function d(e,t){const n=(0,r.useRef)((()=>null===e?c:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,a.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},40626:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(39962),a=n(16550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),s=o===n?e:e.replace(`/${o}/`,"/"),l=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${s}`:`${s}${e}/`}(r)}${l}`}}}},43266:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(67294),a=n(16550),o=n(43768);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},20107:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(39962);function a(){return(0,r.Z)().siteConfig.themeConfig}},84136:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},15806:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},63905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(84136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(15806);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},97795:(e,t,n)=>{"use strict";n.d(t,{O:()=>s});var r=n(67294),a=n(16550),o=n(39962);const i="q";function s(){const e=(0,a.k6)(),{siteConfig:{baseUrl:t}}=(0,o.Z)(),[n,s]=(0,r.useState)("");(0,r.useEffect)((()=>{const e=new URLSearchParams(window.location.search).get(i)??"";s(e)}),[]);return{searchQuery:n,setSearchQuery:(0,r.useCallback)((t=>{const n=new URLSearchParams(window.location.search);t?n.set(i,t):n.delete(i),e.replace({search:n.toString()}),s(t)}),[e]),generateSearchPageLink:(0,r.useCallback)((e=>`${t}search?${i}=${encodeURIComponent(e)}`),[t])}}},13538:(e,t,n)=>{"use strict";let r;n.r(t),n.d(t,{onRouteDidUpdate:()=>i});const a=e=>{if(e.nc_handled)return;e.nc_handled=!0;let t=e.target;for(;t&&!t.classList.contains("DocSearch-Hit");)t=t.parentElement;if(t){const e=document.querySelector(".DocSearch-Input");r({event:"docs/search",$current_url:location.href,path:location.pathname,hash:location.hash,item_clicked:(t.innerText||"").trim(),search_query:e&&e.value})}},o=e=>{if(e.nc_handled||13!==e.which)return;e.nc_handled=!0;let t=e.target;for(;t&&!t.classList.contains("DocSearch-Input");)t=t.parentElement;if(t){const e=document.querySelector(".DocSearch-Hit[aria-selected=true] a");e&&r({event:"docs/search",$current_url:location.href,path:location.pathname,hash:location.hash,item_clicked:(e.innerText||"").trim(),search_query:t&&t.value})}};if(n(36136).Z.canUseDOM){const{init:e,push:t}=n(17316);r=t,e(),document.body.removeEventListener("click",a,!0),document.body.removeEventListener("keydown",o,!0),document.body.addEventListener("click",a,!0),document.body.addEventListener("keydown",o,!0);const i=new URL(location.href),s=i.searchParams.get("origin"),l=i.searchParams.get("search");s&&l&&(r({event:"cloud/search",$current_url:location.href,path:location.pathname,hash:location.hash,search_query:l,origin:s}),i.searchParams.delete("origin"),i.searchParams.delete("search"),window.history.replaceState({},document.title,i.toString()))}function i(e){let{location:t,previousLocation:n}=e;t.pathname===n?.pathname&&t.hash===n?.hash||(console.log(t.href),r({event:"$pageview",$current_url:window.location.href,path:t.pathname,hash:t.hash}))}},86010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},99318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(87462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],s=e&&a(e),l=t&&a(t),c=s||l;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var u=i[i.length-1];n="."===u||".."===u||""===u}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(38776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function h(e,t){t(window.confirm(e))}var b="popstate",v="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,c=i.forceRefresh,w=void 0!==c&&c,k=i.getUserConfirmation,S=void 0===k?h:k,_=i.keyLength,E=void 0===_?6:_,x=e.basename?d(l(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return x&&(o=u(o,x)),f(o,r,n)}function T(){return Math.random().toString(36).substr(2,E)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(C(e.state))}function O(){P(C(y()))}var N=!1;function P(e){if(N)N=!1,L();else{A.confirmTransitionTo(e,"POP",S,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(N=!0,j(a))}(e)}))}}var I=C(y()),D=[I.key];function M(e){return x+p(e)}function j(e){n.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?(window.addEventListener(b,R),o&&window.addEventListener(v,O)):0===F&&(window.removeEventListener(b,R),o&&window.removeEventListener(v,O))}var z=!1;var U={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,S,(function(e){if(e){var t=M(o),i=o.key,s=o.state;if(a)if(n.pushState({key:i,state:s},null,t),w)window.location.href=t;else{var l=D.indexOf(U.location.key),c=D.slice(0,l+1);c.push(o.key),D=c,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,T(),U.location);A.confirmTransitionTo(o,r,S,(function(e){if(e){var t=M(o),i=o.key,s=o.state;if(a)if(n.replaceState({key:i,state:s},null,t),w)window.location.replace(t);else{var l=D.indexOf(U.location.key);-1!==l&&(D[l]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:j,goBack:function(){j(-1)},goForward:function(){j(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=A.appendListener(e);return B(1),function(){B(-1),t()}}};return U}var k="hashchange",S={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+c(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:c,decodePath:l},slash:{encodePath:l,decodePath:l}};function _(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function x(e){window.location.replace(_(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?h:a,i=n.hashType,c=void 0===i?"slash":i,b=e.basename?d(l(e.basename)):"",v=S[c],y=v.encodePath,w=v.decodePath;function C(){var e=w(E());return b&&(e=u(e,b)),f(e)}var T=m();function A(e){(0,r.Z)(z,e),z.length=t.length,T.notifyListeners(z.location,z.action)}var L=!1,R=null;function O(){var e,t,n=E(),r=y(n);if(n!==r)x(r);else{var a=C(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===p(a))return;R=null,function(e){if(L)L=!1,A();else{var t="POP";T.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(p(t));-1===n&&(n=0);var r=D.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var N=E(),P=y(N);N!==P&&x(P);var I=C(),D=[p(I)];function M(e){t.go(e)}var j=0;function F(e){1===(j+=e)&&1===e?window.addEventListener(k,O):0===j&&window.removeEventListener(k,O)}var B=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=_(window.location.href)),n+"#"+y(b+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);if(E()!==a){R=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(p(z.location)),i=D.slice(0,o+1);i.push(t),D=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,z.location);T.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=y(b+t);E()!==a&&(R=t,x(a));var o=D.indexOf(p(z.location));-1!==o&&(D[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(F(1),B=!0),function(){return B&&(B=!1,F(-1)),t()}},listen:function(e){var t=T.appendListener(e);return F(1),function(){F(-1),t()}}};return z}function T(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,s=void 0===i?0:i,l=t.keyLength,c=void 0===l?6:l,u=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,u.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,c)}var h=T(s,0,o.length-1),b=o.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),v=p;function y(e){var t=T(w.index+e,0,w.entries.length-1),r=w.entries[t];u.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:b.length,action:"POP",location:b[h],index:h,entries:b,createHref:v,push:function(e,t){var r="PUSH",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,g(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),u.setPrompt(e)},listen:function(e){return u.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),h=0;h<i.length;++h){var b=i[h];if(!(o[b]||r&&r[b]||g&&g[b]||s&&s[b])){var v=p(n,b);try{c(t,b,v)}catch(y){}}}}return t}},41143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,a,o,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},93878:(e,t,n)=>{"use strict";n.r(t)},30984:(e,t,n)=>{"use strict";n.r(t)},17316:(e,t,n)=>{"use strict";n.r(t),n.d(t,{init:()=>x,push:()=>C});var r,a,o,i=Object.create,s=Object.defineProperty,l=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,p=(r=(e,t)=>{var r=NaN,a="[object Symbol]",o=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,d="object"==typeof self&&self&&self.Object===Object&&self,p=u||d||Function("return this")(),f=Object.prototype.toString,m=Math.max,g=Math.min,h=function(){return p.Date.now()};function b(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function v(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&f.call(e)==a}(e))return r;if(b(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=b(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=s.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):i.test(e)?r:+e}t.exports=function(e,t,n){var r,a,o,i,s,l,c=0,u=!1,d=!1,p=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=r,o=a;return r=a=void 0,c=t,i=e.apply(o,n)}function y(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-c>=o}function w(){var e=h();if(y(e))return k(e);s=setTimeout(w,function(e){var n=t-(e-l);return d?g(n,o-(e-c)):n}(e))}function k(e){return s=void 0,p&&r?f(e):(r=a=void 0,i)}function S(){var e=h(),n=y(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return function(e){return c=e,s=setTimeout(w,t),u?f(e):i}(l);if(d)return s=setTimeout(w,t),f(l)}return void 0===s&&(s=setTimeout(w,t)),i}return t=v(t)||0,b(n)&&(u=!!n.leading,o=(d="maxWait"in n)?m(v(n.maxWait)||0,t):o,p="trailing"in n?!!n.trailing:p),S.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=a=s=void 0},S.flush=function(){return void 0===s?i:k(h())},S}},()=>(a||r((a={exports:{}}).exports,a),a.exports)),f=((e,t,n)=>(n=null!=e?i(u(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of c(t))!d.call(e,a)&&a!==n&&s(e,a,{get:()=>t[a],enumerable:!(r=l(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:s(n,"default",{value:e,enumerable:!0}),e)))(p()),m=new Uint8Array(16);function g(){if(!o&&!(o=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return o(m)}var h=[];for(let T=0;T<256;++T)h.push((T+256).toString(16).slice(1));var b={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var v,y,w=function(e,t,n){if(b.randomUUID&&!t&&!e)return b.randomUUID();let r=(e=e||{}).random||(e.rng||g)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return h[e[t+0]]+h[e[t+1]]+h[e[t+2]]+h[e[t+3]]+"-"+h[e[t+4]]+h[e[t+5]]+"-"+h[e[t+6]]+h[e[t+7]]+"-"+h[e[t+8]]+h[e[t+9]]+"-"+h[e[t+10]]+h[e[t+11]]+h[e[t+12]]+h[e[t+13]]+h[e[t+14]]+h[e[t+15]]}(r)},k=3e3,S=1e4,_=window.location.hostname?.replace(/\.nocodb\.com$/,""),E=class{constructor(){this.queue=[],this.processQueue=(0,f.default)((()=>{let e=this.queue.splice(0,this.queue.length);this.batchProcessor?.(e)}),k,{maxWait:S}),this.batchProcessor=async e=>{!function(e){let t=new XMLHttpRequest,n="https://nocodb.com/api/v1/tele";t.open("POST",n),t.setRequestHeader("Content-Type","application/json;charset=UTF-8"),t.send(JSON.stringify({clientId:v||window.ncClientId,events:e}))}(e)}}enqueueEvent(e){this.queue.push({created_at:Date.now(),...e,subdomain:_}),this.processQueue()}};function x(e={}){k=+e.debounceTime||k,S=+e.maxWaitTime||S,v=window.ncClientId=window.localStorage.getItem("nc_id");let t=document.createElement("iframe");return t.style.display="none",t.style.height="1px",t.style.width="1px",t.setAttribute("src","https://nocodb.com/client.html"),window.onmessage=function(e){("https://nocodb.com"===e.origin||"https://www.nocodb.com"===e.origin)&&e.data&&(v=window.ncClientId=e.data,window.localStorage.setItem("nc_id",e.data),document.body.removeChild(t))},t.onload=function(){t.contentWindow?.postMessage("client_id","https://nocodb.com")},y=new E,v||(v=window.ncClientId=w(),window.localStorage.setItem("nc_id",v)),document.body.appendChild(t),y}function C(e){y||(y=new E),y?.enqueueEvent({created_at:Date.now(),...e})}},74865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){l(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},27418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in o=Object(arguments[l]))n.call(o,c)&&(s[c]=o[c]);if(t){i=t(o);for(var u=0;u<i.length;u++)r.call(o,i[u])&&(s[i[u]]=o[i[u]])}}return s}},14779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return s(o(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,s="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var m=e[i],g=n[2],h=n[3],b=n[4],v=n[5],y=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=m&&m!==g,S="+"===y||"*"===y,_="?"===y||"*"===y,E=n[2]||u,x=b||v;r.push({name:h||o++,prefix:g||"",delimiter:E,optional:_,repeat:S,partial:k,asterisk:!!w,pattern:x?c(x):w?".*":"[^"+l(E)+"]+?"})}}return i<e.length&&(s+=e.substr(i)),s&&r.push(s),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",s=t||{},l=(a||{}).pretty?i:encodeURIComponent,c=0;c<e.length;c++){var u=e[c];if("string"!=typeof u){var d,p=s[u.name];if(null==p){if(u.optional){u.partial&&(o+=u.prefix);continue}throw new TypeError('Expected "'+u.name+'" to be defined')}if(r(p)){if(!u.repeat)throw new TypeError('Expected "'+u.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(u.optional)continue;throw new TypeError('Expected "'+u.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[c].test(d))throw new TypeError('Expected all "'+u.name+'" to match "'+u.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?u.prefix:u.delimiter)+d}}else{if(d=u.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[c].test(d))throw new TypeError('Expected "'+u.name+'" to match "'+u.pattern+'", but received "'+d+'"');o+=u.prefix+d}}else o+=u}return o}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function c(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function u(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",s=0;s<e.length;s++){var c=e[s];if("string"==typeof c)i+=l(c);else{var p=l(c.prefix),f="(?:"+c.pattern+")";t.push(c),c.repeat&&(f+="(?:"+p+f+")*"),i+=f=c.optional?c.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var m=l(n.delimiter||"/"),g=i.slice(-m.length)===m;return a||(i=(g?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&g?"":"(?="+m+"|$)",u(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return u(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return u(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},98269:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(36809),a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(e){return"IMG"===e.tagName},i=function(e){return e&&1===e.nodeType},s=function(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()},l=function(e){try{return Array.isArray(e)?e.filter(o):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(o):i(e)?[e].filter(o):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(o):[]}catch(t){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}},c=function(e,t){var n=a({bubbles:!1,cancelable:!1,detail:void 0},t);if("function"==typeof window.CustomEvent)return new CustomEvent(e,n);var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,n.bubbles,n.cancelable,n.detail),r};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}");const u=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},o=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return[].concat(e,l(t))}),[]);return r.filter((function(e){return-1===f.indexOf(e)})).forEach((function(e){f.push(e),e.classList.add("medium-zoom-image")})),m.forEach((function(e){var t=e.type,n=e.listener,a=e.options;r.forEach((function(e){e.addEventListener(t,n,a)}))})),w},u=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target,t=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(b.container)if(b.container instanceof Object)t=(e=a({},e,b.container)).width-e.left-e.right-2*b.margin,n=e.height-e.top-e.bottom-2*b.margin;else{var r=(i(b.container)?b.container:document.querySelector(b.container)).getBoundingClientRect(),o=r.width,l=r.height,c=r.left,u=r.top;e=a({},e,{width:o,height:l,left:c,top:u})}t=t||e.width-2*b.margin,n=n||e.height-2*b.margin;var d=v.zoomedHd||v.original,p=s(d)?t:d.naturalWidth||t,f=s(d)?n:d.naturalHeight||n,m=d.getBoundingClientRect(),g=m.top,h=m.left,y=m.width,w=m.height,k=Math.min(Math.max(y,p),t)/y,S=Math.min(Math.max(w,f),n)/w,_=Math.min(k,S),E="scale("+_+") translate3d("+((t-y)/2-h+b.margin+e.left)/_+"px, "+((n-w)/2-g+b.margin+e.top)/_+"px, 0)";v.zoomed.style.transform=E,v.zoomedHd&&(v.zoomedHd.style.transform=E)};return new r((function(n){if(e&&-1===f.indexOf(e))n(w);else{if(v.zoomed)n(w);else{if(e)v.original=e;else{if(!(f.length>0))return void n(w);var r=f;v.original=r[0]}if(v.original.dispatchEvent(c("medium-zoom:open",{detail:{zoom:w}})),h=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,g=!0,v.zoomed=function(e){var t=e.getBoundingClientRect(),n=t.top,r=t.left,a=t.width,o=t.height,i=e.cloneNode(),s=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,l=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return i.removeAttribute("id"),i.style.position="absolute",i.style.top=n+s+"px",i.style.left=r+l+"px",i.style.width=a+"px",i.style.height=o+"px",i.style.transform="",i}(v.original),document.body.appendChild(y),b.template){var a=i(b.template)?b.template:document.querySelector(b.template);v.template=document.createElement("div"),v.template.appendChild(a.content.cloneNode(!0)),document.body.appendChild(v.template)}if(v.original.parentElement&&"PICTURE"===v.original.parentElement.tagName&&v.original.currentSrc&&(v.zoomed.src=v.original.currentSrc),document.body.appendChild(v.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),v.original.classList.add("medium-zoom-image--hidden"),v.zoomed.classList.add("medium-zoom-image--opened"),v.zoomed.addEventListener("click",d),v.zoomed.addEventListener("transitionend",(function e(){g=!1,v.zoomed.removeEventListener("transitionend",e),v.original.dispatchEvent(c("medium-zoom:opened",{detail:{zoom:w}})),n(w)})),v.original.getAttribute("data-zoom-src")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("srcset"),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.removeAttribute("loading"),v.zoomedHd.src=v.zoomed.getAttribute("data-zoom-src"),v.zoomedHd.onerror=function(){clearInterval(o),console.warn("Unable to reach the zoom image target "+v.zoomedHd.src),v.zoomedHd=null,t()};var o=setInterval((function(){v.zoomedHd.complete&&(clearInterval(o),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",d),document.body.appendChild(v.zoomedHd),t())}),10)}else if(v.original.hasAttribute("srcset")){v.zoomedHd=v.zoomed.cloneNode(),v.zoomedHd.removeAttribute("sizes"),v.zoomedHd.removeAttribute("loading");var s=v.zoomedHd.addEventListener("load",(function(){v.zoomedHd.removeEventListener("load",s),v.zoomedHd.classList.add("medium-zoom-image--opened"),v.zoomedHd.addEventListener("click",d),document.body.appendChild(v.zoomedHd),t()}))}else t()}}}))},d=function(){return new r((function(e){if(!g&&v.original){g=!0,document.body.classList.remove("medium-zoom--opened"),v.zoomed.style.transform="",v.zoomedHd&&(v.zoomedHd.style.transform=""),v.template&&(v.template.style.transition="opacity 150ms",v.template.style.opacity=0),v.original.dispatchEvent(c("medium-zoom:close",{detail:{zoom:w}})),v.zoomed.addEventListener("transitionend",(function t(){v.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(v.zoomed),v.zoomedHd&&document.body.removeChild(v.zoomedHd),document.body.removeChild(y),v.zoomed.classList.remove("medium-zoom-image--opened"),v.template&&document.body.removeChild(v.template),g=!1,v.zoomed.removeEventListener("transitionend",t),v.original.dispatchEvent(c("medium-zoom:closed",{detail:{zoom:w}})),v.original=null,v.zoomed=null,v.zoomedHd=null,v.template=null,e(w)}))}else e(w)}))},p=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target;return v.original?d():u({target:e})},f=[],m=[],g=!1,h=0,b=n,v={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?b=t:(t||"string"==typeof t)&&o(t);var y=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((b=a({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},b)).background);document.addEventListener("click",(function(e){var t=e.target;t!==y?-1!==f.indexOf(t)&&p({target:t}):d()})),document.addEventListener("keyup",(function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||d()})),document.addEventListener("scroll",(function(){if(!g&&v.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(h-e)>b.scrollOffset&&setTimeout(d,150)}})),window.addEventListener("resize",d);var w={open:u,close:d,toggle:p,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(y.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=a({},b.container,e.container)),e.template){var n=i(e.template)?e.template:document.querySelector(e.template);t.template=n}return b=a({},b,t),f.forEach((function(e){e.dispatchEvent(c("medium-zoom:update",{detail:{zoom:w}}))})),w},clone:function(){return e(a({},b,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}))},attach:o,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];v.zoomed&&d();var r=t.length>0?t.reduce((function(e,t){return[].concat(e,l(t))}),[]):f;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(c("medium-zoom:detach",{detail:{zoom:w}}))})),f=f.filter((function(e){return-1===r.indexOf(e)})),w},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),m.push({type:"medium-zoom:"+e,listener:t,options:n}),w},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return f.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),m=m.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),w},getOptions:function(){return b},getImages:function(){return f},getZoomedImage:function(){return v.original}};return w},{themeConfig:d}=r.default,p=function(){if("undefined"==typeof window)return null;const{zoomSelector:e=".markdown img"}=d,{imageZoom:{selector:t=e,options:n}={}}=d;return setTimeout((()=>{u(t,n)}),1e3),{onRouteUpdate({location:e,previousLocation:r}){e&&e.hash&&e.hash.length||r&&e.pathname!==r.pathname&&setTimeout((()=>{u(t,n)}),1e3)}}}()},87410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var s in o)if(o.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(i[l]=n[l]);n.hasOwnProperty(s)||(i[s]=o[s])}var c=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===c&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],a||s);var l=t[s],c=r.util.type(l);"Object"!==c||o[i(l)]?"Array"!==c||o[i(l)]||(o[i(l)]=!0,e(l,n,s,o)):(o[i(l)]=!0,e(l,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new s;return l(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,s,u,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var m=0;m<f.length;++m){if(d&&d.cause==p+","+m)return;var g=f[m],h=g.inside,b=!!g.lookbehind,v=!!g.greedy,y=g.alias;if(v&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,S=s.next,_=u;S!==t.tail&&!(d&&_>=d.reach);_+=S.value.length,S=S.next){var E=S.value;if(t.length>e.length)return;if(!(E instanceof a)){var x,C=1;if(v){if(!(x=o(k,_,e,b))||x.index>=e.length)break;var T=x.index,A=x.index+x[0].length,L=_;for(L+=S.value.length;T>=L;)L+=(S=S.next).value.length;if(_=L-=S.value.length,S.value instanceof a)continue;for(var R=S;R!==t.tail&&(L<A||"string"==typeof R.value);R=R.next)C++,L+=R.value.length;C--,E=e.slice(_,L),x.index-=_}else if(!(x=o(k,0,E,b)))continue;T=x.index;var O=x[0],N=E.slice(0,T),P=E.slice(T+O.length),I=_+E.length;d&&I>d.reach&&(d.reach=I);var D=S.prev;if(N&&(D=l(t,D,N),_+=N.length),c(t,D,C),S=l(t,D,new a(p,h?r.tokenize(O,h):O,y,O)),P&&l(t,S,P),C>1){var M={cause:p+","+m,reach:I};i(e,t,n,S.prev,_,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var s="";for(var l in o.attributes)s+=" "+l+'="'+(o.attributes[l]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+s+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var s=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),l="language-"+(s=(/[a-z][\w-]*/i.exec(s)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,l]:i.alias.push(l):i.alias=[l]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],c=/language-(.+)/.exec(o);if(c){n=c[1];break}}var u,d=e.languages[n];if(d)t.content=e.highlight((u=t.content,u.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n);var r=s[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),s={amp:"&",lt:"<",gt:">",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===u(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=u(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===u(0).content&&(n++,f(u(0),"property-mutation"),a.length>0)){var s=p(/^\{$/,/^\}$/);if(-1===s)continue;for(var l=n;l<s;l++){var c=t[l];"variable"===c.type&&a.indexOf(c.content)>=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=u(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],s=i.content;if("punctuation"===i.type&&"string"==typeof s)if(e.test(s))a++;else if(r.test(s)&&0===--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function l(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,l(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=l(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=s(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,s=o.indexOf(a);if(-1!==s){++i;var l=o.substring(0,s),d=c(u[a]),f=o.substring(s+a.length),m=[];if(l&&m.push(l),m.push(d),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var s=i[1];if(3===i.length&&"string"!=typeof s&&"embedded-code"===s.type){var l=p(s),c=s.alias,d=Array.isArray(c)?c[0]:c,f=e.languages[d];if(!f)continue;i[1]=u(l,f,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},s=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var l=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(l+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(l=i(t[r-1])+l,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",l,null,l)}a.content&&"string"!=typeof a.content&&s(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(s){for(var l=0;l<s.length&&!(a>=o.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];g&&v.push.apply(v,i([g])),v.push(h),b&&v.push.apply(v,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},29901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(29901),a=n(39642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(16500).resolve(t)],delete Prism.languages[e],n(16500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},16500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=16500},39642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in a(t,o),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),m=u;a(m);){for(var g in p={},m){var h=l[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return s[e]=a}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},92703:(e,t,n)=>{"use strict";var r=n(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},45697:(e,t,n)=>{e.exports=n(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},64448:(e,t,n)=>{"use strict";var r=n(67294),a=n(27418),o=n(63840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var s=new Set,l={};function c(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)s.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,m={},g={};function h(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){b[e]=new h(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];b[t]=new h(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){b[e]=new h(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){b[e]=new h(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){b[e]=new h(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){b[e]=new h(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){b[e]=new h(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){b[e]=new h(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){b[e]=new h(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=b.hasOwnProperty(t)?b[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(g,e)||!f.call(m,e)&&(p.test(e)?g[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);b[t]=new h(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){b[e]=new h(e,1,!1,e.toLowerCase(),null,!1,!1)})),b.xlinkHref=new h("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){b[e]=new h(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,S=60103,_=60106,E=60107,x=60108,C=60114,T=60109,A=60110,L=60112,R=60113,O=60120,N=60115,P=60116,I=60121,D=60128,M=60129,j=60130,F=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;S=B("react.element"),_=B("react.portal"),E=B("react.fragment"),x=B("react.strict_mode"),C=B("react.profiler"),T=B("react.provider"),A=B("react.context"),L=B("react.forward_ref"),R=B("react.suspense"),O=B("react.suspense_list"),N=B("react.memo"),P=B("react.lazy"),I=B("react.block"),B("react.scope"),D=B("react.opaque.id"),M=B("react.debug_trace_mode"),j=B("react.offscreen"),F=B("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function Z(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(l){var r=l}Reflect.construct(e,[],t)}else{try{t.call()}catch(l){r=l}e.call(t.prototype)}else{try{throw Error()}catch(l){r=l}e()}}catch(l){if(l&&r&&"string"==typeof l.stack){for(var a=l.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,s=o.length-1;1<=i&&0<=s&&a[i]!==o[s];)s--;for(;1<=i&&0<=s;i--,s--)if(a[i]!==o[s]){if(1!==i||1!==s)do{if(i--,0>--s||a[i]!==o[s])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=s);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function G(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=Z(e.type,!1);case 11:return e=Z(e.type.render,!1);case 22:return e=Z(e.type._render,!1);case 1:return e=Z(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case E:return"Fragment";case _:return"Portal";case C:return"Profiler";case x:return"StrictMode";case R:return"Suspense";case O:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case N:return V(e.type);case I:return V(e._render);case P:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function le(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ce(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ue(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,ge,he=(ge=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ve={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var Se=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(Se[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function Ee(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,Te=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Ce)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Ce(e.stateNode,e.type,t))}}function Re(e){Te?Ae?Ae.push(e):Ae=[e]:Te=e}function Oe(){if(Te){var e=Te,t=Ae;if(Ae=Te=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Ne(e,t){return e(t)}function Pe(e,t,n,r,a){return e(t,n,r,a)}function Ie(){}var De=Ne,Me=!1,je=!1;function Fe(){null===Te&&null===Ae||(Ie(),Oe())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(ge){ze=!1}function $e(e,t,n,r,a,o,i,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(u){this.onError(u)}}var qe=!1,He=null,Ze=!1,Ge=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,s,l){qe=!1,He=null,$e.apply(Ve,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ye(e){if(Qe(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Ye(a),e;if(o===r)return Ye(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var s=!1,l=a.child;l;){if(l===n){s=!0,n=a,r=o;break}if(l===r){s=!0,r=a,n=o;break}l=l.sibling}if(!s){for(l=o.child;l;){if(l===n){s=!0,n=o,r=a;break}if(l===r){s=!0,r=o,n=a;break}l=l.sibling}if(!s)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,st=null,lt=null,ct=new Map,ut=new Map,dt=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":lt=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ut.delete(t.pointerId)}}function gt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function ht(e){var t=ta(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){bt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&bt(it)&&(it=null),null!==st&&bt(st)&&(st=null),null!==lt&&bt(lt)&&(lt=null),ct.forEach(vt),ut.forEach(vt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==st&&wt(st,e),null!==lt&&wt(lt,e),ct.forEach(t),ut.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)ht(n),null===n.blockedOn&&dt.shift()}function St(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var _t={animationend:St("Animation","AnimationEnd"),animationiteration:St("Animation","AnimationIteration"),animationstart:St("Animation","AnimationStart"),transitionend:St("Transition","TransitionEnd")},Et={},xt={};function Ct(e){if(Et[e])return Et[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in xt)return Et[e]=n[t];return e}d&&(xt=document.createElement("div").style,"AnimationEvent"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),"TransitionEvent"in window||delete _t.transitionend.transition);var Tt=Ct("animationend"),At=Ct("animationiteration"),Lt=Ct("animationstart"),Rt=Ct("transitionend"),Ot=new Map,Nt=new Map,Pt=["abort","abort",Tt,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Rt,"transitionEnd","waiting","waiting"];function It(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Nt.set(r,t),Ot.set(r,a),c(a,[r])}}(0,o.unstable_now)();var Dt=8;function Mt(e){if(0!=(1&e))return Dt=15,1;if(0!=(2&e))return Dt=14,2;if(0!=(4&e))return Dt=13,4;var t=24&e;return 0!==t?(Dt=12,t):0!=(32&e)?(Dt=11,32):0!==(t=192&e)?(Dt=10,t):0!=(256&e)?(Dt=9,256):0!==(t=3584&e)?(Dt=8,t):0!=(4096&e)?(Dt=7,4096):0!==(t=4186112&e)?(Dt=6,t):0!==(t=62914560&e)?(Dt=5,t):67108864&e?(Dt=4,67108864):0!=(134217728&e)?(Dt=3,134217728):0!==(t=805306368&e)?(Dt=2,t):0!=(1073741824&e)?(Dt=1,1073741824):(Dt=8,e)}function jt(e,t){var n=e.pendingLanes;if(0===n)return Dt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,s=e.pingedLanes;if(0!==o)r=o,a=Dt=15;else if(0!==(o=134217727&n)){var l=o&~i;0!==l?(r=Mt(l),a=Dt):0!==(s&=o)&&(r=Mt(s),a=Dt)}else 0!==(o=n&~i)?(r=Mt(o),a=Dt):0!==s&&(r=Mt(s),a=Dt);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=Dt)return t;Dt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Ft(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Zt|0)|0},Ht=Math.log,Zt=Math.LN2;var Gt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Qt(e,t,n,r){Me||Ie();var a=Yt,o=Me;Me=!0;try{Pe(a,e,t,n,r)}finally{(Me=o)||Fe()}}function Kt(e,t,n,r){Vt(Gt,Yt.bind(null,e,t,n,r))}function Yt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=gt(it,e,t,n,r,a),!0;case"dragenter":return st=gt(st,e,t,n,r,a),!0;case"mouseover":return lt=gt(lt,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ct.set(o,gt(ct.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ut.set(o,gt(ut.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Ir(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=xe(r);if(null!==(a=ta(a))){var o=Qe(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Ir(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function sn(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var ln,cn,un,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(dn),fn=a({},dn,{view:0,detail:0}),mn=sn(fn),gn=a({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(ln=e.screenX-un.screenX,cn=e.screenY-un.screenY):cn=ln=0,un=e),ln)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),hn=sn(gn),bn=sn(a({},gn,{dataTransfer:0})),vn=sn(a({},fn,{relatedTarget:0})),yn=sn(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=sn(wn),Sn=sn(a({},dn,{data:0})),_n={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},En={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Cn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=xn[e])&&!!t[e]}function Tn(){return Cn}var An=a({},fn,{key:function(e){if(e.key){var t=_n[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?En[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=sn(An),Rn=sn(a({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),On=sn(a({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Nn=sn(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pn=a({},gn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),In=sn(Pn),Dn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,jn=null;d&&"documentMode"in document&&(jn=document.documentMode);var Fn=d&&"TextEvent"in window&&!jn,Bn=d&&(!Mn||jn&&8<jn&&11>=jn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Zn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Gn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Zn[e.type]:"textarea"===t}function Vn(e,t,n,r){Re(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Qn=null;function Kn(e){Ar(e,0)}function Yn(e){if(Y(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Qn=Wn=null)}function ar(e){if("value"===e.propertyName&&Yn(Qn)){var t=[];if(Vn(t,Qn,e,xe(e)),e=Kn,Me)e(t);else{Me=!0;try{Ne(e,t)}finally{Me=!1,Fe()}}}}function or(e,t,n){"focusin"===e?(rr(),Qn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Qn)}function sr(e,t){if("click"===e)return Yn(t)}function lr(e,t){if("input"===e||"change"===e)return Yn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ur=Object.prototype.hasOwnProperty;function dr(e,t){if(cr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!ur.call(t,n[r])||!cr(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=pr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function gr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function hr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var br=d&&"documentMode"in document&&11>=document.documentMode,vr=null,yr=null,wr=null,kr=!1;function Sr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==vr||vr!==X(r)||("selectionStart"in(r=vr)&&hr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=vr)))}It("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),It("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),It(Pt,2);for(var _r="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Er=0;Er<_r.length;Er++)Nt.set(_r[Er],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var xr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Cr=new Set("cancel close invalid load scroll toggle".split(" ").concat(xr));function Tr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,s,l,c){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var u=He;qe=!1,He=null,Ze||(Ze=!0,Ge=u)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var s=r[i],l=s.instance,c=s.currentTarget;if(s=s.listener,l!==o&&a.isPropagationStopped())break e;Tr(a,s,c),o=l}else for(i=0;i<r.length;i++){if(l=(s=r[i]).instance,c=s.currentTarget,s=s.listener,l!==o&&a.isPropagationStopped())break e;Tr(a,s,c),o=l}}}if(Ze)throw e=Ge,Ze=!1,Ge=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Pr(t,e,2,!1),n.add(r))}var Rr="_reactListening"+Math.random().toString(36).slice(2);function Or(e){e[Rr]||(e[Rr]=!0,s.forEach((function(t){Cr.has(t)||Nr(t,!1,e,null),Nr(t,!0,e,null)})))}function Nr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Cr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),s=e+"__"+(t?"capture":"bubble");i.has(s)||(t&&(a|=4),Pr(o,e,a,t),i.add(s))}function Pr(e,t,n,r){var a=Nt.get(t);switch(void 0===a?2:a){case 0:a=Qt;break;case 1:a=Kt;break;default:a=Yt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var s=r.stateNode.containerInfo;if(s===a||8===s.nodeType&&s.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var l=i.tag;if((3===l||4===l)&&((l=i.stateNode.containerInfo)===a||8===l.nodeType&&l.parentNode===a))return;i=i.return}for(;null!==s;){if(null===(i=ta(s)))return;if(5===(l=i.tag)||6===l){r=o=i;continue e}s=s.parentNode}}r=r.return}!function(e,t,n){if(je)return e(t,n);je=!0;try{return De(e,t,n)}finally{je=!1,Fe()}}((function(){var r=o,a=xe(n),i=[];e:{var s=Ot.get(e);if(void 0!==s){var l=pn,c=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":l=Ln;break;case"focusin":c="focus",l=vn;break;case"focusout":c="blur",l=vn;break;case"beforeblur":case"afterblur":l=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=bn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=On;break;case Tt:case At:case Lt:l=yn;break;case Rt:l=Nn;break;case"scroll":l=mn;break;case"wheel":l=In;break;case"copy":case"cut":case"paste":l=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=Rn}var u=0!=(4&t),d=!u&&"scroll"===e,p=u?null!==s?s+"Capture":null:s;u=[];for(var f,m=r;null!==m;){var g=(f=m).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Be(m,p))&&u.push(Dr(m,g,f)))),d)break;m=m.return}0<u.length&&(s=new l(s,c,null,n,a),i.push({event:s,listeners:u}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!ta(c)&&!c[Jr])&&(l||s)&&(s=a.window===a?a:(s=a.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(c=(c=n.relatedTarget||n.toElement)?ta(c):null)&&(c!==(d=Qe(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(l=null,c=r),l!==c)){if(u=hn,g="onMouseLeave",p="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(u=Rn,g="onPointerLeave",p="onPointerEnter",m="pointer"),d=null==l?s:ra(l),f=null==c?s:ra(c),(s=new u(g,m+"leave",l,n,a)).target=d,s.relatedTarget=f,g=null,ta(a)===r&&((u=new u(p,m+"enter",c,n,a)).target=f,u.relatedTarget=d,g=u),d=g,l&&c)e:{for(p=c,m=0,f=u=l;f;f=jr(f))m++;for(f=0,g=p;g;g=jr(g))f++;for(;0<m-f;)u=jr(u),m--;for(;0<f-m;)p=jr(p),f--;for(;m--;){if(u===p||null!==p&&u===p.alternate)break e;u=jr(u),p=jr(p)}u=null}else u=null;null!==l&&Fr(i,s,l,u,!1),null!==c&&null!==d&&Fr(i,d,c,u,!0)}if("select"===(l=(s=r?ra(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var h=Xn;else if(Gn(s))if(Jn)h=lr;else{h=ir;var b=or}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(h=sr);switch(h&&(h=h(e,r))?Vn(i,h,n,a):(b&&b(e,s,r),"focusout"===e&&(b=s._wrapperState)&&b.controlled&&"number"===s.type&&ae(s,"number",s.value)),b=r?ra(r):window,e){case"focusin":(Gn(b)||"true"===b.contentEditable)&&(vr=b,yr=r,wr=null);break;case"focusout":wr=yr=vr=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Sr(i,n,a);break;case"selectionchange":if(br)break;case"keydown":case"keyup":Sr(i,n,a)}var v;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(v=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(b=Mr(r,y)).length&&(y=new Sn(y,e,null,n,a),i.push({event:y,listeners:b}),v?y.data=v:null!==(v=qn(n))&&(y.data=v))),(v=Fn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new Sn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=v))}Ar(i,t)}))}function Dr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Dr(e,o,a)),null!=(o=Be(e,t))&&r.push(Dr(e,o,a))),e=e.return}return r}function jr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Fr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var s=n,l=s.alternate,c=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==c&&(s=c,a?null!=(l=Be(n,o))&&i.unshift(Dr(n,l,s)):a||null!=(l=Be(n,o))&&i.push(Dr(n,l,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Zr="function"==typeof clearTimeout?clearTimeout:void 0;function Gr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Qr=0;var Kr=Math.random().toString(36).slice(2),Yr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Yr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Yr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Yr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Yr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],sa=-1;function la(e){return{current:e}}function ca(e){0>sa||(e.current=ia[sa],ia[sa]=null,sa--)}function ua(e,t){sa++,ia[sa]=e.current,e.current=t}var da={},pa=la(da),fa=la(!1),ma=da;function ga(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ha(e){return null!=(e=e.childContextTypes)}function ba(){ca(fa),ca(pa)}function va(e,t,n){if(pa.current!==da)throw Error(i(168));ua(pa,t),ua(fa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=pa.current,ua(pa,e),ua(fa,fa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ca(fa),ca(pa),ua(pa,e)):ca(fa),ua(fa,n)}var Sa=null,_a=null,Ea=o.unstable_runWithPriority,xa=o.unstable_scheduleCallback,Ca=o.unstable_cancelCallback,Ta=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Ra=o.unstable_getCurrentPriorityLevel,Oa=o.unstable_ImmediatePriority,Na=o.unstable_UserBlockingPriority,Pa=o.unstable_NormalPriority,Ia=o.unstable_LowPriority,Da=o.unstable_IdlePriority,Ma={},ja=void 0!==Aa?Aa:function(){},Fa=null,Ba=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function qa(){switch(Ra()){case Oa:return 99;case Na:return 98;case Pa:return 97;case Ia:return 96;case Da:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return Oa;case 98:return Na;case 97:return Pa;case 96:return Ia;case 95:return Da;default:throw Error(i(332))}}function Za(e,t){return e=Ha(e),Ea(e,t)}function Ga(e,t,n){return e=Ha(e),xa(e,t,n)}function Va(){if(null!==Ba){var e=Ba;Ba=null,Ca(e)}Wa()}function Wa(){if(!za&&null!==Fa){za=!0;var e=0;try{var t=Fa;Za(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Fa=null}catch(n){throw null!==Fa&&(Fa=Fa.slice(e+1)),xa(Oa,Va),n}finally{za=!1}}}var Qa=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Ya=la(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Ya.current;ca(Ya),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function so(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function lo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function co(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function uo(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function fo(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,s=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var c=l,u=c.next;c.next=null,null===s?i=u:s.next=u,s=c;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==s&&(null===p?d.firstBaseUpdate=u:p.next=u,d.lastBaseUpdate=c)}}if(null!==i){for(p=o.baseState,s=0,d=u=c=null;;){l=i.lane;var f=i.eventTime;if((r&l)===l){null!==d&&(d=d.next={eventTime:f,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,g=i;switch(l=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){p=m.call(f,p,l);break e}p=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(l="function"==typeof(m=g.payload)?m.call(f,p,l):m))break e;p=a({},p,l);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(l=o.effects)?o.effects=[i]:l.push(i))}else f={eventTime:f,lane:l,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(u=d=f,c=p):d=d.next=f,s|=l;if(null===(i=i.next)){if(null===(l=o.shared.pending))break;i=l.next,l.next=null,o.lastBaseUpdate=l,o.shared.pending=null}}null===d&&(c=p),o.baseState=c,o.firstBaseUpdate=u,o.lastBaseUpdate=d,Us|=s,e.lanes=s,e.memoizedState=p}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var go=(new r.Component).refs;function ho(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var bo={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=pl(),a=fl(e),o=co(r,a);o.payload=t,null!=n&&(o.callback=n),uo(e,o),ml(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=pl(),a=fl(e),o=co(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),uo(e,o),ml(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=pl(),r=fl(e),a=co(n,r);a.tag=2,null!=t&&(a.callback=t),uo(e,a),ml(e,r,n)}};function vo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ha(t)?ma:pa.current,o=(r=null!=(r=t.contextTypes))?ga(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=bo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&bo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=go,so(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ha(t)?ma:pa.current,a.context=ga(e,o)),fo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(ho(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&bo.enqueueReplaceState(a,a.state,null),fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var So=Array.isArray;function _o(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===go&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Eo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function xo(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Gl(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function s(t){return e&&null===t.alternate&&(t.flags=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Kl(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function c(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=_o(e,t,n),r.return=e,r):((r=Vl(n.type,n.key,n.props,null,e.mode,r)).ref=_o(e,t,n),r.return=e,r)}function u(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Yl(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Wl(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Kl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case S:return(n=Vl(t.type,t.key,t.props,null,e.mode,n)).ref=_o(e,null,t),n.return=e,n;case _:return(t=Yl(t,e.mode,n)).return=e,t}if(So(t)||$(t))return(t=Wl(t,e.mode,n,null)).return=e,t;Eo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case S:return n.key===a?n.type===E?d(e,t,n.props.children,r,a):c(e,t,n,r):null;case _:return n.key===a?u(e,t,n,r):null}if(So(n)||$(n))return null!==a?null:d(e,t,n,r,null);Eo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case S:return e=e.get(null===r.key?n:r.key)||null,r.type===E?d(t,e,r.props.children,a,r.key):c(t,e,r,a);case _:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(So(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);Eo(t,r)}return null}function g(a,i,s,l){for(var c=null,u=null,d=i,g=i=0,h=null;null!==d&&g<s.length;g++){d.index>g?(h=d,d=null):h=d.sibling;var b=f(a,d,s[g],l);if(null===b){null===d&&(d=h);break}e&&d&&null===b.alternate&&t(a,d),i=o(b,i,g),null===u?c=b:u.sibling=b,u=b,d=h}if(g===s.length)return n(a,d),c;if(null===d){for(;g<s.length;g++)null!==(d=p(a,s[g],l))&&(i=o(d,i,g),null===u?c=d:u.sibling=d,u=d);return c}for(d=r(a,d);g<s.length;g++)null!==(h=m(d,a,g,s[g],l))&&(e&&null!==h.alternate&&d.delete(null===h.key?g:h.key),i=o(h,i,g),null===u?c=h:u.sibling=h,u=h);return e&&d.forEach((function(e){return t(a,e)})),c}function h(a,s,l,c){var u=$(l);if("function"!=typeof u)throw Error(i(150));if(null==(l=u.call(l)))throw Error(i(151));for(var d=u=null,g=s,h=s=0,b=null,v=l.next();null!==g&&!v.done;h++,v=l.next()){g.index>h?(b=g,g=null):b=g.sibling;var y=f(a,g,v.value,c);if(null===y){null===g&&(g=b);break}e&&g&&null===y.alternate&&t(a,g),s=o(y,s,h),null===d?u=y:d.sibling=y,d=y,g=b}if(v.done)return n(a,g),u;if(null===g){for(;!v.done;h++,v=l.next())null!==(v=p(a,v.value,c))&&(s=o(v,s,h),null===d?u=v:d.sibling=v,d=v);return u}for(g=r(a,g);!v.done;h++,v=l.next())null!==(v=m(g,a,h,v.value,c))&&(e&&null!==v.alternate&&g.delete(null===v.key?h:v.key),s=o(v,s,h),null===d?u=v:d.sibling=v,d=v);return e&&g.forEach((function(e){return t(a,e)})),u}return function(e,r,o,l){var c="object"==typeof o&&null!==o&&o.type===E&&null===o.key;c&&(o=o.props.children);var u="object"==typeof o&&null!==o;if(u)switch(o.$$typeof){case S:e:{for(u=o.key,c=r;null!==c;){if(c.key===u){if(7===c.tag){if(o.type===E){n(e,c.sibling),(r=a(c,o.props.children)).return=e,e=r;break e}}else if(c.elementType===o.type){n(e,c.sibling),(r=a(c,o.props)).ref=_o(e,c,o),r.return=e,e=r;break e}n(e,c);break}t(e,c),c=c.sibling}o.type===E?((r=Wl(o.props.children,e.mode,l,o.key)).return=e,e=r):((l=Vl(o.type,o.key,o.props,null,e.mode,l)).ref=_o(e,r,o),l.return=e,e=l)}return s(e);case _:e:{for(c=o.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Yl(o,e.mode,l)).return=e,e=r}return s(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Kl(o,e.mode,l)).return=e,e=r),s(e);if(So(o))return g(e,r,o,l);if($(o))return h(e,r,o,l);if(u&&Eo(e,o),void 0===o&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var Co=xo(!0),To=xo(!1),Ao={},Lo=la(Ao),Ro=la(Ao),Oo=la(Ao);function No(e){if(e===Ao)throw Error(i(174));return e}function Po(e,t){switch(ua(Oo,t),ua(Ro,e),ua(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ca(Lo),ua(Lo,t)}function Io(){ca(Lo),ca(Ro),ca(Oo)}function Do(e){No(Oo.current);var t=No(Lo.current),n=fe(t,e.type);t!==n&&(ua(Ro,e),ua(Lo,n))}function Mo(e){Ro.current===e&&(ca(Lo),ca(Ro))}var jo=la(0);function Fo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Bo=null,zo=null,Uo=!1;function $o(e,t){var n=Hl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(Bo=e);$o(Bo,n)}Bo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,Bo=e}}function Zo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Go(e){if(e!==Bo)return!1;if(!Uo)return Zo(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Zo(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=Bo=null,Uo=!1}var Wo=[];function Qo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Yo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Ni:Pi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Ii,e=n(r,a)}while(ri)}if(Ko.current=Oi,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function si(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function li(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ci(e,t){return"function"==typeof t?t(e):t}function ui(e){var t=li(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var s=a.next;a.next=o.next,o.next=s}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var l=s=o=null,c=a;do{var u=c.lane;if((Xo&u)===u)null!==l&&(l=l.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),r=c.eagerReducer===e?c.eagerState:e(r,c.action);else{var d={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=d,o=r):l=l.next=d,Jo.lanes|=u,Us|=u}c=c.next}while(null!==c&&c!==a);null===l?o=r:l.next=s,cr(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=l,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=li(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var s=a=a.next;do{o=e(o,s.action),s=s.next}while(s!==a);cr(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function fi(e,t,n,r){var a=Ps;if(null===a)throw Error(i(349));var o=t._getVersion,s=o(t._source),l=Ko.current,c=l.useState((function(){return pi(a,t,n)})),u=c[1],d=c[0];c=ti;var p=e.memoizedState,f=p.refs,m=f.getSnapshot,g=p.source;p=p.subscribe;var h=Jo;return e.memoizedState={refs:f,source:t,subscribe:r},l.useEffect((function(){f.getSnapshot=n,f.setSnapshot=u;var e=o(t._source);if(!cr(s,e)){e=n(t._source),cr(d,e)||(u(e),e=fl(h),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var l=31-qt(i),c=1<<l;r[l]|=e,i&=~c}}}),[n,t,r]),l.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fl(h);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),cr(m,n)&&cr(g,t)&&cr(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:d}).dispatch=u=Ri.bind(null,Jo,e),c.queue=e,c.baseQueue=null,d=pi(a,t,n),c.memoizedState=c.baseState=d),d}function mi(e,t,n){return fi(li(),e,t,n)}function gi(e){var t=si();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ci,lastRenderedState:e}).dispatch=Ri.bind(null,Jo,e),[t.memoizedState,e]}function hi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function bi(e){return e={current:e},si().memoizedState=e}function vi(){return li().memoizedState}function yi(e,t,n,r){var a=si();Jo.flags|=e,a.memoizedState=hi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=li();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void hi(t,n,o,r)}Jo.flags|=e,a.memoizedState=hi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Si(e,t){return wi(516,4,e,t)}function _i(e,t){return wi(4,2,e,t)}function Ei(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function xi(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,Ei.bind(null,t,e),n)}function Ci(){}function Ti(e,t){var n=li();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=li();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=qa();Za(98>n?98:n,(function(){e(!0)})),Za(97<n?97:n,(function(){var n=Yo.transition;Yo.transition=1;try{e(!1),t()}finally{Yo.transition=n}}))}function Ri(e,t,n){var r=pl(),a=fl(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var s=t.lastRenderedState,l=i(s,n);if(o.eagerReducer=i,o.eagerState=l,cr(l,s))return}catch(c){}ml(e,a,r)}}var Oi={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Ni={readContext:oo,useCallback:function(e,t){return si().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,Ei.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=si();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=si();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ri.bind(null,Jo,e),[r.memoizedState,e]},useRef:bi,useState:gi,useDebugValue:Ci,useDeferredValue:function(e){var t=gi(e),n=t[0],r=t[1];return ki((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=gi(!1),t=e[0];return bi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=si();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Qr++).toString(36))),Error(i(355))})),n=gi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,hi(5,(function(){n("r:"+(Qr++).toString(36))}),void 0,null)),t}return gi(t="r:"+(Qr++).toString(36)),t},unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Si,useImperativeHandle:xi,useLayoutEffect:_i,useMemo:Ai,useReducer:ui,useRef:vi,useState:function(){return ui(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=ui(ci),n=t[0],r=t[1];return Si((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=ui(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ui(ci)[0]},unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:Ti,useContext:oo,useEffect:Si,useImperativeHandle:xi,useLayoutEffect:_i,useMemo:Ai,useReducer:di,useRef:vi,useState:function(){return di(ci)},useDebugValue:Ci,useDeferredValue:function(e){var t=di(ci),n=t[0],r=t[1];return Si((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=di(ci)[0];return[vi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ci)[0]},unstable_isNewReconciler:!1},Di=k.ReactCurrentOwner,Mi=!1;function ji(e,t,n,r){t.child=null===e?To(t,null,n,r):Co(t,e.child,n,r)}function Fi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,os(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Zl(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vl(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?os(e,t,o):(t.flags|=1,(e=Gl(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,os(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Sl(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Sl(t,e),null;t.memoizedState={baseLanes:0},Sl(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Sl(t,r);return ji(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ha(n)?ma:pa.current;return o=ga(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,ji(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,os(e,t,a))}function Hi(e,t,n,r,a){if(ha(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=oo(c):c=ga(t,c=ha(n)?ma:pa.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==c)&&wo(t,i,r,c),io=!1;var p=t.memoizedState;i.state=p,fo(t,r,i,a),l=t.memoizedState,s!==r||p!==l||fa.current||io?("function"==typeof u&&(ho(t,n,u,r),l=t.memoizedState),(s=io||vo(t,n,s,r,p,l,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=c,r=s):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,lo(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:Ka(t.type,s),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(l=n.contextType)&&null!==l?l=oo(l):l=ga(t,l=ha(n)?ma:pa.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==d||p!==l)&&wo(t,i,r,l),io=!1,p=t.memoizedState,i.state=p,fo(t,r,i,a);var m=t.memoizedState;s!==d||p!==m||fa.current||io?("function"==typeof f&&(ho(t,n,f,r),m=t.memoizedState),(c=io||vo(t,n,c,r,p,m,l))?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,l),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,l)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=l,r=c):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Zi(e,t,n,r,o,a)}function Zi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),os(e,t,o);r=t.stateNode,Di.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Co(t,e.child,null,o),t.child=Co(t,null,s,o)):ji(e,t,s,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Gi(e){var t=e.stateNode;t.pendingContext?va(0,t.pendingContext,t.pendingContext!==t.context):t.context&&va(0,t.context,!1),Po(e,t.containerInfo)}var Vi,Wi,Qi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=jo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ua(jo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,t.lanes=33554432,e):((n=Ql({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=ts(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,a):(n=es(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ql(t,a,0,null),n=Wl(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function es(e,t,n,r){var a=e.child;return e=a.sibling,n=Gl(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function ts(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var s={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=s,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Gl(i,s),null!==e?r=Gl(e,r):(r=Wl(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function ns(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rs(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function as(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(ji(e,t,r.children,n),0!=(2&(r=jo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ns(e,n);else if(19===e.tag)ns(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ua(jo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Fo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rs(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Fo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rs(t,!0,n,null,o,t.lastEffect);break;case"together":rs(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function os(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Us|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Gl(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Gl(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function is(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ss(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ha(t.type)&&ba(),null;case 3:return Io(),ca(fa),ca(pa),Qo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Go(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=No(Oo.current);if(n=t.type,null!==e&&null!=t.stateNode)Qi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=No(Lo.current),Go(t)){r=t.stateNode,n=t.type;var s=t.memoizedProps;switch(r[Yr]=t,r[Xr]=s,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<xr.length;e++)Lr(xr[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,s),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!s.multiple},Lr("invalid",r);break;case"textarea":le(r,s),Lr("invalid",r)}for(var c in _e(n,s),e=null,s)s.hasOwnProperty(c)&&(o=s[c],"children"===c?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):l.hasOwnProperty(c)&&null!=o&&"onScroll"===c&&Lr("scroll",r));switch(n){case"input":K(r),re(r,s,!0);break;case"textarea":K(r),ue(r);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(c=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=c.createElement(n,{is:r.is}):(e=c.createElement(n),"select"===n&&(c=e,r.multiple?c.multiple=!0:r.size&&(c.size=r.size))):e=c.createElementNS(e,n),e[Yr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,c=Ee(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<xr.length;o++)Lr(xr[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":le(e,r),o=se(e,r),Lr("invalid",e);break;default:o=r}_e(n,o);var u=o;for(s in u)if(u.hasOwnProperty(s)){var d=u[s];"style"===s?ke(e,d):"dangerouslySetInnerHTML"===s?null!=(d=d?d.__html:void 0)&&he(e,d):"children"===s?"string"==typeof d?("textarea"!==n||""!==d)&&be(e,d):"number"==typeof d&&be(e,""+d):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(l.hasOwnProperty(s)?null!=d&&"onScroll"===s&&Lr("scroll",e):null!=d&&w(e,s,d,c))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ue(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(s=r.value)?ie(e,!!r.multiple,s,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=No(Oo.current),No(Lo.current),Go(t)?(r=t.stateNode,n=t.memoizedProps,r[Yr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Yr]=t,t.stateNode=r)}return null;case 13:return ca(jo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Go(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&jo.current)?0===Fs&&(Fs=3):(0!==Fs&&3!==Fs||(Fs=4),null===Ps||0==(134217727&Us)&&0==(134217727&$s)||vl(Ps,Ds))),(r||n)&&(t.flags|=4),null);case 4:return Io(),Wi(t),null===e&&Or(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ca(jo),null===(r=t.memoizedState))return null;if(s=0!=(64&t.flags),null===(c=r.rendering))if(s)is(r,!1);else{if(0!==Fs||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=Fo(e))){for(t.flags|=64,is(r,!1),null!==(s=c.updateQueue)&&(t.updateQueue=s,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(s=n).flags&=2,s.nextEffect=null,s.firstEffect=null,s.lastEffect=null,null===(c=s.alternate)?(s.childLanes=0,s.lanes=e,s.child=null,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=c.childLanes,s.lanes=c.lanes,s.child=c.child,s.memoizedProps=c.memoizedProps,s.memoizedState=c.memoizedState,s.updateQueue=c.updateQueue,s.type=c.type,e=c.dependencies,s.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ua(jo,1&jo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Gs&&(t.flags|=64,s=!0,is(r,!1),t.lanes=33554432)}else{if(!s)if(null!==(e=Fo(c))){if(t.flags|=64,s=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),is(r,!0),null===r.tail&&"hidden"===r.tailMode&&!c.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Gs&&1073741824!==n&&(t.flags|=64,s=!0,is(r,!1),t.lanes=33554432);r.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=r.last)?n.sibling=c:t.child=c,r.last=c)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=jo.current,ua(jo,s?1&t|2:1&t),n):null;case 23:case 24:return _l(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function ls(e){switch(e.tag){case 1:ha(e.type)&&ba();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Io(),ca(fa),ca(pa),Qo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ca(jo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ca(jo),null;case 4:return Io(),null;case 10:return no(e),null;case 23:case 24:return _l(),null;default:return null}}function cs(e,t){try{var n="",r=t;do{n+=G(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function us(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Qi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,No(Lo.current);var i,s=null;switch(n){case"input":o=J(e,o),r=J(e,r),s=[];break;case"option":o=oe(e,o),r=oe(e,r),s=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),s=[];break;case"textarea":o=se(e,o),r=se(e,r),s=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in _e(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var c=o[d];for(i in c)c.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(l.hasOwnProperty(d)?s||(s=[]):(s=s||[]).push(d,null));for(d in r){var u=r[d];if(c=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&u!==c&&(null!=u||null!=c))if("style"===d)if(c){for(i in c)!c.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in u)u.hasOwnProperty(i)&&c[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(s||(s=[]),s.push(d,n)),n=u;else"dangerouslySetInnerHTML"===d?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(s=s||[]).push(d,u)):"children"===d?"string"!=typeof u&&"number"!=typeof u||(s=s||[]).push(d,""+u):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(l.hasOwnProperty(d)?(null!=u&&"onScroll"===d&&Lr("scroll",e),s||c===u||(s=[])):"object"==typeof u&&null!==u&&u.$$typeof===D?u.toString():(s=s||[]).push(d,u))}n&&(s=s||[]).push("style",n);var d=s;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var ds="function"==typeof WeakMap?WeakMap:Map;function ps(e,t,n){(n=co(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ks||(Ks=!0,Ys=r),us(0,t)},n}function fs(e,t,n){(n=co(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return us(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xs?Xs=new Set([this]):Xs.add(this),us(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ms="function"==typeof WeakSet?WeakSet:Set;function gs(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zl(e,n)}else t.current=null}function hs(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Gr(t.stateNode.containerInfo))}throw Error(i(163))}function bs(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(jl(n,e),Ml(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function vs(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function ys(e,t){if(_a&&"function"==typeof _a.onCommitFiberUnmount)try{_a.onCommitFiberUnmount(Sa,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))jl(t,n);else{r=t;try{a()}catch(o){zl(r,o)}}n=n.next}while(n!==e)}break;case 1:if(gs(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zl(t,o)}break;case 5:gs(t);break;case 4:xs(e,t)}}function ws(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ks(e){return 5===e.tag||3===e.tag||4===e.tag}function Ss(e){e:{for(var t=e.return;null!==t;){if(ks(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(be(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ks(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?_s(e,n,t):Es(e,n,t)}function _s(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(_s(e,t,n),e=e.sibling;null!==e;)_s(e,t,n),e=e.sibling}function Es(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Es(e,t,n),e=e.sibling;null!==e;)Es(e,t,n),e=e.sibling}function xs(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var s=e,l=a,c=l;;)if(ys(s,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===l)break e;for(;null===c.sibling;){if(null===c.return||c.return===l)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}r?(s=n,l=a.stateNode,8===s.nodeType?s.parentNode.removeChild(l):s.removeChild(l)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(ys(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Cs(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),Ee(e,a),t=Ee(e,r),a=0;a<o.length;a+=2){var s=o[a],l=o[a+1];"style"===s?ke(n,l):"dangerouslySetInnerHTML"===s?he(n,l):"children"===s?be(n,l):w(n,s,l,t)}switch(e){case"input":ne(n,r);break;case"textarea":ce(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Zs=$a(),vs(t.child,!0)),void Ts(t);case 19:return void Ts(t);case 23:case 24:return void vs(t,null!==t.memoizedState)}throw Error(i(163))}function Ts(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ms),t.forEach((function(t){var r=$l.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function As(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ls=Math.ceil,Rs=k.ReactCurrentDispatcher,Os=k.ReactCurrentOwner,Ns=0,Ps=null,Is=null,Ds=0,Ms=0,js=la(0),Fs=0,Bs=null,zs=0,Us=0,$s=0,qs=0,Hs=null,Zs=0,Gs=1/0;function Vs(){Gs=$a()+500}var Ws,Qs=null,Ks=!1,Ys=null,Xs=null,Js=!1,el=null,tl=90,nl=[],rl=[],al=null,ol=0,il=null,sl=-1,ll=0,cl=0,ul=null,dl=!1;function pl(){return 0!=(48&Ns)?$a():-1!==sl?sl:sl=$a()}function fl(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ll&&(ll=zs),0!==Qa.transition){0!==cl&&(cl=null!==Hs?Hs.pendingLanes:0),e=ll;var t=4186112&~cl;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Ns)&&98===e?e=Bt(12,ll):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ll),e}function ml(e,t,n){if(50<ol)throw ol=0,il=null,Error(i(185));if(null===(e=gl(e,t)))return null;$t(e,t,n),e===Ps&&($s|=t,4===Fs&&vl(e,Ds));var r=qa();1===t?0!=(8&Ns)&&0==(48&Ns)?yl(e):(hl(e,n),0===Ns&&(Vs(),Va())):(0==(4&Ns)||98!==r&&99!==r||(null===al?al=new Set([e]):al.add(e)),hl(e,n)),Hs=e}function gl(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function hl(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,s=e.pendingLanes;0<s;){var l=31-qt(s),c=1<<l,u=o[l];if(-1===u){if(0==(c&r)||0!=(c&a)){u=t,Mt(c);var d=Dt;o[l]=10<=d?u+250:6<=d?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);s&=~c}if(r=jt(e,e===Ps?Ds:0),t=Dt,0===r)null!==n&&(n!==Ma&&Ca(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ca(n)}15===t?(n=yl.bind(null,e),null===Fa?(Fa=[n],Ba=xa(Oa,Wa)):Fa.push(n),n=Ma):14===t?n=Ga(99,yl.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Ga(n,bl.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function bl(e){if(sl=-1,cl=ll=0,0!=(48&Ns))throw Error(i(327));var t=e.callbackNode;if(Dl()&&e.callbackNode!==t)return null;var n=jt(e,e===Ps?Ds:0);if(0===n)return null;var r=n,a=Ns;Ns|=16;var o=Cl();for(Ps===e&&Ds===r||(Vs(),El(e,r));;)try{Ll();break}catch(l){xl(e,l)}if(to(),Rs.current=o,Ns=a,null!==Is?r=0:(Ps=null,Ds=0,r=Fs),0!=(zs&$s))El(e,0);else if(0!==r){if(2===r&&(Ns|=64,e.hydrate&&(e.hydrate=!1,Gr(e.containerInfo)),0!==(n=Ft(e))&&(r=Tl(e,n))),1===r)throw t=Bs,El(e,0),vl(e,n),hl(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Nl(e);break;case 3:if(vl(e,n),(62914560&n)===n&&10<(r=Zs+500-$a())){if(0!==jt(e,0))break;if(((a=e.suspendedLanes)&n)!==n){pl(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Nl.bind(null,e),r);break}Nl(e);break;case 4:if(vl(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var s=31-qt(n);o=1<<s,(s=r[s])>a&&(a=s),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ls(n/1960))-n)){e.timeoutHandle=Hr(Nl.bind(null,e),n);break}Nl(e);break;default:throw Error(i(329))}}return hl(e,$a()),e.callbackNode===t?bl.bind(null,e):null}function vl(e,t){for(t&=~qs,t&=~$s,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function yl(e){if(0!=(48&Ns))throw Error(i(327));if(Dl(),e===Ps&&0!=(e.expiredLanes&Ds)){var t=Ds,n=Tl(e,t);0!=(zs&$s)&&(n=Tl(e,t=jt(e,t)))}else n=Tl(e,t=jt(e,0));if(0!==e.tag&&2===n&&(Ns|=64,e.hydrate&&(e.hydrate=!1,Gr(e.containerInfo)),0!==(t=Ft(e))&&(n=Tl(e,t))),1===n)throw n=Bs,El(e,0),vl(e,t),hl(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Nl(e),hl(e,$a()),null}function wl(e,t){var n=Ns;Ns|=1;try{return e(t)}finally{0===(Ns=n)&&(Vs(),Va())}}function kl(e,t){var n=Ns;Ns&=-2,Ns|=8;try{return e(t)}finally{0===(Ns=n)&&(Vs(),Va())}}function Sl(e,t){ua(js,Ms),Ms|=t,zs|=t}function _l(){Ms=js.current,ca(js)}function El(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Zr(n)),null!==Is)for(n=Is.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&ba();break;case 3:Io(),ca(fa),ca(pa),Qo();break;case 5:Mo(r);break;case 4:Io();break;case 13:case 19:ca(jo);break;case 10:no(r);break;case 23:case 24:_l()}n=n.return}Ps=e,Is=Gl(e.current,null),Ds=Ms=zs=t,Fs=0,Bs=null,qs=$s=Us=0}function xl(e,t){for(;;){var n=Is;try{if(to(),Ko.current=Oi,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Os.current=null,null===n||null===n.return){Fs=1,Bs=t,Is=null;break}e:{var o=e,i=n.return,s=n,l=t;if(t=Ds,s.flags|=2048,s.firstEffect=s.lastEffect=null,null!==l&&"object"==typeof l&&"function"==typeof l.then){var c=l;if(0==(2&s.mode)){var u=s.alternate;u?(s.updateQueue=u.updateQueue,s.memoizedState=u.memoizedState,s.lanes=u.lanes):(s.updateQueue=null,s.memoizedState=null)}var d=0!=(1&jo.current),p=i;do{var f;if(f=13===p.tag){var m=p.memoizedState;if(null!==m)f=null!==m.dehydrated;else{var g=p.memoizedProps;f=void 0!==g.fallback&&(!0!==g.unstable_avoidThisFallback||!d)}}if(f){var h=p.updateQueue;if(null===h){var b=new Set;b.add(c),p.updateQueue=b}else h.add(c);if(0==(2&p.mode)){if(p.flags|=64,s.flags|=16384,s.flags&=-2981,1===s.tag)if(null===s.alternate)s.tag=17;else{var v=co(-1,1);v.tag=2,uo(s,v)}s.lanes|=1;break e}l=void 0,s=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new ds,l=new Set,y.set(c,l)):void 0===(l=y.get(c))&&(l=new Set,y.set(c,l)),!l.has(s)){l.add(s);var w=Ul.bind(null,o,c,s);c.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);l=Error((V(s.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Fs&&(Fs=2),l=cs(l,s),p=i;do{switch(p.tag){case 3:o=l,p.flags|=4096,t&=-t,p.lanes|=t,po(p,ps(0,o,t));break e;case 1:o=l;var k=p.type,S=p.stateNode;if(0==(64&p.flags)&&("function"==typeof k.getDerivedStateFromError||null!==S&&"function"==typeof S.componentDidCatch&&(null===Xs||!Xs.has(S)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fs(p,o,t));break e}}p=p.return}while(null!==p)}Ol(n)}catch(_){t=_,Is===n&&null!==n&&(Is=n=n.return);continue}break}}function Cl(){var e=Rs.current;return Rs.current=Oi,null===e?Oi:e}function Tl(e,t){var n=Ns;Ns|=16;var r=Cl();for(Ps===e&&Ds===t||El(e,t);;)try{Al();break}catch(a){xl(e,a)}if(to(),Ns=n,Rs.current=r,null!==Is)throw Error(i(261));return Ps=null,Ds=0,Fs}function Al(){for(;null!==Is;)Rl(Is)}function Ll(){for(;null!==Is&&!Ta();)Rl(Is)}function Rl(e){var t=Ws(e.alternate,e,Ms);e.memoizedProps=e.pendingProps,null===t?Ol(e):Is=t,Os.current=null}function Ol(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ss(n,t,Ms)))return void(Is=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ms)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=ls(t)))return n.flags&=2047,void(Is=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Is=t);Is=t=e}while(null!==t);0===Fs&&(Fs=5)}function Nl(e){var t=qa();return Za(99,Pl.bind(null,e,t)),null}function Pl(e,t){do{Dl()}while(null!==el);if(0!=(48&Ns))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var s=e.eventTimes,l=e.expirationTimes;0<o;){var c=31-qt(o),u=1<<c;a[c]=0,s[c]=-1,l[c]=-1,o&=~u}if(null!==al&&0==(24&r)&&al.has(e)&&al.delete(e),e===Ps&&(Is=Ps=null,Ds=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Ns,Ns|=32,Os.current=null,zr=Wt,hr(s=gr())){if("selectionStart"in s)l={start:s.selectionStart,end:s.selectionEnd};else e:if(l=(l=s.ownerDocument)&&l.defaultView||window,(u=l.getSelection&&l.getSelection())&&0!==u.rangeCount){l=u.anchorNode,o=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{l.nodeType,c.nodeType}catch(C){l=null;break e}var d=0,p=-1,f=-1,m=0,g=0,h=s,b=null;t:for(;;){for(var v;h!==l||0!==o&&3!==h.nodeType||(p=d+o),h!==c||0!==u&&3!==h.nodeType||(f=d+u),3===h.nodeType&&(d+=h.nodeValue.length),null!==(v=h.firstChild);)b=h,h=v;for(;;){if(h===s)break t;if(b===l&&++m===o&&(p=d),b===c&&++g===u&&(f=d),null!==(v=h.nextSibling))break;b=(h=b).parentNode}h=v}l=-1===p||-1===f?null:{start:p,end:f}}else l=null;l=l||{start:0,end:0}}else l=null;Ur={focusedElem:s,selectionRange:l},Wt=!1,ul=null,dl=!1,Qs=r;do{try{Il()}catch(C){if(null===Qs)throw Error(i(330));zl(Qs,C),Qs=Qs.nextEffect}}while(null!==Qs);ul=null,Qs=r;do{try{for(s=e;null!==Qs;){var y=Qs.flags;if(16&y&&be(Qs.stateNode,""),128&y){var w=Qs.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:Ss(Qs),Qs.flags&=-3;break;case 6:Ss(Qs),Qs.flags&=-3,Cs(Qs.alternate,Qs);break;case 1024:Qs.flags&=-1025;break;case 1028:Qs.flags&=-1025,Cs(Qs.alternate,Qs);break;case 4:Cs(Qs.alternate,Qs);break;case 8:xs(s,l=Qs);var S=l.alternate;ws(l),null!==S&&ws(S)}Qs=Qs.nextEffect}}catch(C){if(null===Qs)throw Error(i(330));zl(Qs,C),Qs=Qs.nextEffect}}while(null!==Qs);if(k=Ur,w=gr(),y=k.focusedElem,s=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==s&&hr(y)&&(w=s.start,void 0===(k=s.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),l=y.textContent.length,S=Math.min(s.start,l),s=void 0===s.end?S:Math.min(s.end,l),!k.extend&&S>s&&(l=s,s=S,S=l),l=fr(y,S),o=fr(y,s),l&&o&&(1!==k.rangeCount||k.anchorNode!==l.node||k.anchorOffset!==l.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(l.node,l.offset),k.removeAllRanges(),S>s?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Qs=r;do{try{for(y=e;null!==Qs;){var _=Qs.flags;if(36&_&&bs(y,Qs.alternate,Qs),128&_){w=void 0;var E=Qs.ref;if(null!==E){var x=Qs.stateNode;Qs.tag,w=x,"function"==typeof E?E(w):E.current=w}}Qs=Qs.nextEffect}}catch(C){if(null===Qs)throw Error(i(330));zl(Qs,C),Qs=Qs.nextEffect}}while(null!==Qs);Qs=null,ja(),Ns=a}else e.current=n;if(Js)Js=!1,el=e,tl=t;else for(Qs=r;null!==Qs;)t=Qs.nextEffect,Qs.nextEffect=null,8&Qs.flags&&((_=Qs).sibling=null,_.stateNode=null),Qs=t;if(0===(r=e.pendingLanes)&&(Xs=null),1===r?e===il?ol++:(ol=0,il=e):ol=0,n=n.stateNode,_a&&"function"==typeof _a.onCommitFiberRoot)try{_a.onCommitFiberRoot(Sa,n,void 0,64==(64&n.current.flags))}catch(C){}if(hl(e,$a()),Ks)throw Ks=!1,e=Ys,Ys=null,e;return 0!=(8&Ns)||Va(),null}function Il(){for(;null!==Qs;){var e=Qs.alternate;dl||null===ul||(0!=(8&Qs.flags)?Je(Qs,ul)&&(dl=!0):13===Qs.tag&&As(e,Qs)&&Je(Qs,ul)&&(dl=!0));var t=Qs.flags;0!=(256&t)&&hs(e,Qs),0==(512&t)||Js||(Js=!0,Ga(97,(function(){return Dl(),null}))),Qs=Qs.nextEffect}}function Dl(){if(90!==tl){var e=97<tl?97:tl;return tl=90,Za(e,Fl)}return!1}function Ml(e,t){nl.push(t,e),Js||(Js=!0,Ga(97,(function(){return Dl(),null})))}function jl(e,t){rl.push(t,e),Js||(Js=!0,Ga(97,(function(){return Dl(),null})))}function Fl(){if(null===el)return!1;var e=el;if(el=null,0!=(48&Ns))throw Error(i(331));var t=Ns;Ns|=32;var n=rl;rl=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],s=a.destroy;if(a.destroy=void 0,"function"==typeof s)try{s()}catch(c){if(null===o)throw Error(i(330));zl(o,c)}}for(n=nl,nl=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var l=a.create;a.destroy=l()}catch(c){if(null===o)throw Error(i(330));zl(o,c)}}for(l=e.current.firstEffect;null!==l;)e=l.nextEffect,l.nextEffect=null,8&l.flags&&(l.sibling=null,l.stateNode=null),l=e;return Ns=t,Va(),!0}function Bl(e,t,n){uo(e,t=ps(0,t=cs(n,t),1)),t=pl(),null!==(e=gl(e,1))&&($t(e,1,t),hl(e,t))}function zl(e,t){if(3===e.tag)Bl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bl(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r))){var a=fs(n,e=cs(t,e),1);if(uo(n,a),a=pl(),null!==(n=gl(n,1)))$t(n,1,a),hl(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xs||!Xs.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Ul(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=pl(),e.pingedLanes|=e.suspendedLanes&n,Ps===e&&(Ds&n)===n&&(4===Fs||3===Fs&&(62914560&Ds)===Ds&&500>$a()-Zs?El(e,0):qs|=n),hl(e,t)}function $l(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ll&&(ll=zs),0===(t=zt(62914560&~ll))&&(t=4194304))),n=pl(),null!==(e=gl(e,t))&&($t(e,t,n),hl(e,n))}function ql(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hl(e,t,n,r){return new ql(e,t,n,r)}function Zl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Gl(e,t){var n=e.alternate;return null===n?((n=Hl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vl(e,t,n,r,a,o){var s=2;if(r=e,"function"==typeof e)Zl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case E:return Wl(n.children,a,o,t);case M:s=8,a|=16;break;case x:s=8,a|=1;break;case C:return(e=Hl(12,n,t,8|a)).elementType=C,e.type=C,e.lanes=o,e;case R:return(e=Hl(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case O:return(e=Hl(19,n,t,a)).elementType=O,e.lanes=o,e;case j:return Ql(n,a,o,t);case F:return(e=Hl(24,n,t,a)).elementType=F,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:s=10;break e;case A:s=9;break e;case L:s=11;break e;case N:s=14;break e;case P:s=16,r=null;break e;case I:s=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hl(s,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Wl(e,t,n,r){return(e=Hl(7,e,r,t)).lanes=n,e}function Ql(e,t,n,r){return(e=Hl(23,e,r,t)).elementType=j,e.lanes=n,e}function Kl(e,t,n){return(e=Hl(6,e,null,t)).lanes=n,e}function Yl(e,t,n){return(t=Hl(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xl(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Jl(e,t,n,r){var a=t.current,o=pl(),s=fl(a);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(ha(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(i(171))}if(1===n.tag){var c=n.type;if(ha(c)){n=ya(n,c,l);break e}}n=l}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=co(o,s)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),uo(a,t),ml(a,s,o),s}function ec(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nc(e,t){tc(e,t),(e=e.alternate)&&tc(e,t)}function rc(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xl(e,t,null!=n&&!0===n.hydrate),t=Hl(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,so(t),e[Jr]=n.current,Or(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function ac(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function oc(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var s=a;a=function(){var e=ec(i);s.call(e)}}Jl(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new rc(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var l=a;a=function(){var e=ec(i);l.call(e)}}kl((function(){Jl(t,i,e,a)}))}return ec(i)}function ic(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ac(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:_,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Ws=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Gi(t),Vo();break;case 5:Do(t);break;case 1:ha(t.type)&&wa(t);break;case 4:Po(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ua(Ya,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ua(jo,1&jo.current),null!==(t=os(e,t,n))?t.sibling:null);ua(jo,1&jo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return as(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ua(jo,jo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return os(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ga(t,pa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ha(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,so(t);var s=r.getDerivedStateFromProps;"function"==typeof s&&ho(t,r,s,e),a.updater=bo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Zi(null,t,r,!0,o,n)}else t.tag=0,ji(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Zl(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===N)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Fi(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Gi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,lo(e,t),fo(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=os(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),Bo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=To(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else ji(e,t,r,n),Vo();t=t.child}return t;case 5:return Do(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,s=a.children,qr(r,a)?s=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),ji(e,t,s,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Po(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Co(t,null,r,n):ji(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Fi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return ji(e,t,t.pendingProps,n),t.child;case 8:case 12:return ji(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,s=t.memoizedProps,o=a.value;var l=t.type._context;if(ua(Ya,l._currentValue),l._currentValue=o,null!==s)if(l=s.value,0===(o=cr(l,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,o):1073741823))){if(s.children===a.children&&!fa.current){t=os(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===r&&0!=(u.observedBits&o)){1===l.tag&&((u=co(-1,n&-n)).tag=2,uo(l,u)),l.lanes|=n,null!==(u=l.alternate)&&(u.lanes|=n),ro(l.return,n),c.lanes|=n;break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}ji(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,ji(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),Bi(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ha(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Zi(null,t,r,!0,e,n);case 19:return as(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},rc.prototype.render=function(e){Jl(e,this._internalRoot,null,null)},rc.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Jl(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ml(e,4,pl()),nc(e,4))},tt=function(e){13===e.tag&&(ml(e,67108864,pl()),nc(e,67108864))},nt=function(e){if(13===e.tag){var t=pl(),n=fl(e);ml(e,n,t),nc(e,n)}},rt=function(e,t){return t()},Ce=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Y(r),ne(r,a)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Ne=wl,Pe=function(e,t,n,r,a){var o=Ns;Ns|=4;try{return Za(98,e.bind(null,t,n,r,a))}finally{0===(Ns=o)&&(Vs(),Va())}},Ie=function(){0==(49&Ns)&&(function(){if(null!==al){var e=al;al=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,hl(e,$a())}))}Va()}(),Dl())},De=function(e,t){var n=Ns;Ns|=2;try{return e(t)}finally{0===(Ns=n)&&(Vs(),Va())}};var sc={Events:[na,ra,aa,Re,Oe,Dl,{current:!1}]},lc={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},cc={bundleType:lc.bundleType,version:lc.version,rendererPackageName:lc.rendererPackageName,rendererConfig:lc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:lc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var uc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!uc.isDisabled&&uc.supportsFiber)try{Sa=uc.inject(cc),_a=uc}catch(ge){}}t.createPortal=ic,t.hydrate=function(e,t,n){if(!ac(t))throw Error(i(200));return oc(null,e,t,!0,n)}},73935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(64448)},69590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var s,l,c,u;if(Array.isArray(e)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(!o(e[l],i[l]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;for(u=e.entries();!(l=u.next()).done;)if(!o(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(l=u.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(e[l]!==i[l])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((s=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(i,c[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==c[l]&&"__v"!==c[l]&&"__o"!==c[l]||!e.$$typeof)&&!o(e[c[l]],i[c[l]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},70405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>Z,ql:()=>J});var r=n(67294),a=n(45697),o=n.n(a),i=n(69590),s=n.n(i),l=n(41143),c=n.n(l),u=n(96774),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function g(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},b={rel:["amphtml","canonical","alternate"]},v={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},S=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),_=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=_(e,h.TITLE),n=_(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=_(e,"defaultTitle");return t||r||void 0},x=function(e){return _(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},T=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var s=o[i],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var c=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][c]&&(a[n][c]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var s=o[i],l=p({},r[s],a[s]);r[s]=l}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},O=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},N=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},P=[h.NOSCRIPT,h.SCRIPT,h.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},j=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(h.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return j(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=O(e.metaTags,y),o=O(t,b),i=O(n,v);return{priorityMethods:{toComponent:function(){return[].concat(j(h.META,a.priority),j(h.LINK,o.priority),j(h.SCRIPT,i.priority))},toString:function(){return F(h.META,a.priority,r)+" "+F(h.LINK,o.priority,r)+" "+F(h.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",a,r),link:F(h.LINK,u,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,o,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,i,r),title:F(h.TITLE,{title:l,titleAttributes:c},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,Z=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);Z.canUseDOM=H,Z.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},Z.defaultProps={context:{}},Z.displayName="HelmetProvider";var G=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),s=0;s<i.length;s+=1){var l=i[s],c=t[l]||"";n.getAttribute(l)!==c&&n.setAttribute(l,c),-1===a.indexOf(l)&&a.push(l);var u=o.indexOf(l);-1!==u&&o.splice(u,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;V(h.BODY,e.bodyAttributes),V(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(h.TITLE,t)}(u,d);var p={baseTag:G(h.BASE,n),linkTags:G(h.LINK,a),metaTags:G(h.META,o),noscriptTags:G(h.NOSCRIPT,i),scriptTags:G(h.SCRIPT,l),styleTags:G(h.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),s(e,f,m)},Q=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:T(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:_(e,"defer"),encode:_(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:A(h.LINK,["rel","href"],e),metaTags:A(h.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(h.NOSCRIPT,["innerHTML"],e),onChangeClientState:x(e),scriptTags:A(h.SCRIPT,["src","innerHTML"],e),styleTags:A(h.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});Z.canUseDOM?(t=o,Q&&cancelAnimationFrame(Q),t.defer?Q=requestAnimationFrame((function(){W(t,(function(){Q=null}))})):(W(t),Q=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(N(this.props,"helmetData"),N(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case h.SCRIPT:case h.NOSCRIPT:return{innerHTML:t};case h.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case h.BODY:return p({},a,{bodyAttributes:p({},o)});case h.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=g(r,Y),s=Object.keys(i).reduce((function(e,t){return e[S[t]||t]=i[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,o),l){case h.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:s,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,p({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},69921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case o:case s:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case h:case g:case l:return e;default:return t}}case a:return t}}}function S(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=h,t.Memo=g,t.Portal=a,t.Profiler=s,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return S(e)||k(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===s||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===v||e.$$typeof===y||e.$$typeof===w||e.$$typeof===b)},t.typeOf=k},59864:(e,t,n)=>{"use strict";e.exports=n(69921)},68356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var s=n(67294),l=n(45697),c=[],u=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function h(){return g||(g=e(m.loader)),g.promise}return c.push(h),"function"==typeof m.webpack&&u.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return h()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(m.loader),r._loadModule()})),h(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return h()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?s.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(s.Component),o(d,"contextTypes",{loadable:l.shape({report:l.func.isRequired})}),p}function g(e){return m(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(p,e)};var h=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function b(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return b(e)}))}o(h,"propTypes",{report:l.func.isRequired}),o(h,"childContextTypes",{loadable:l.shape({report:l.func.isRequired}).isRequired}),g.Capture=h,g.preloadAll=function(){return new Promise((function(e,t){b(c).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){b(u).then(e,e)}))},e.exports=g},18790:(e,t,n)=>{"use strict";n.d(t,{H:()=>s,f:()=>i});var r=n(16550),a=n(87462),o=n(67294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},73727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>u,rU:()=>h});var r=n(16550),a=n(75068),o=n(67294),i=n(99318),s=n(87462),l=n(63366),c=n(38776),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},f=function(e){return e},m=o.forwardRef;void 0===m&&(m=f);var g=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,l.Z)(e,["innerRef","navigate","onClick"]),c=i.target,u=(0,s.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||c&&"_self"!==c||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return u.ref=f!==m&&t||n,o.createElement("a",u)}));var h=m((function(e,t){var n=e.component,a=void 0===n?g:n,u=e.replace,h=e.to,b=e.innerRef,v=(0,l.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=e.history,r=p(d(h,e.location),e.location),l=r?n.createHref(r):"",g=(0,s.Z)({},v,{href:l,navigate:function(){var t=d(h,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(u||r?n.replace:n.push)(t)}});return f!==m?g.ref=t||b:g.innerRef=b,o.createElement(a,g)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var y=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,u=void 0===i?"active":i,f=e.activeStyle,m=e.className,g=e.exact,y=e.isActive,w=e.location,k=e.sensitive,S=e.strict,_=e.style,E=e.to,x=e.innerRef,C=(0,l.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,c.Z)(!1);var n=w||e.location,i=p(d(E,n),n),l=i.pathname,T=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=T?(0,r.LX)(n.pathname,{path:T,exact:g,sensitive:k,strict:S}):null,L=!!(y?y(A,n):A),R="function"==typeof m?m(L):m,O="function"==typeof _?_(L):_;L&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,u),O=(0,s.Z)({},O,f));var N=(0,s.Z)({"aria-current":L&&a||null,className:R,style:O,to:i},C);return b!==v?N.ref=t||x:N.innerRef=x,o.createElement(h,N)}))}))},16550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>y,LX:()=>_,TH:()=>P,k6:()=>N,rs:()=>R,s6:()=>v});var r=n(75068),a=n(67294),o=n(45697),i=n.n(o),s=n(99318),l=n(38776),c=n(87462),u=n(14779),d=n.n(u),p=(n(59864),n(63366)),f=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=a.createContext||function(e,t){var n,o,s="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);l.childContextTypes=((n={})[s]=i().object.isRequired,n);var c=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},a.getValue=function(){return this.context[s]?this.context[s].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return c.contextTypes=((o={})[s]=i().object,o),{Provider:l,Consumer:c}},h=function(e){var t=g();return t.displayName=e,t},b=h("Router-History"),v=h("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(v.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(b.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,S=0;function _(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,s=void 0!==i&&i,l=n.sensitive,c=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return S<k&&(r[e]=o,S++),o}(n,{end:o,strict:s,sensitive:c}),a=r.regexp,i=r.keys,l=a.exec(e);if(!l)return null;var u=l[0],p=l.slice(1),f=e===u;return o&&!f?null:{path:n,url:"/"===n&&""===u?"/":u,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,l.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?_(n.pathname,e.props):t.match,o=(0,c.Z)({},t,{location:n,match:r}),i=e.props,s=i.children,u=i.component,d=i.render;return Array.isArray(s)&&function(e){return 0===a.Children.count(e)}(s)&&(s=null),a.createElement(v.Provider,{value:o},o.match?s?"function"==typeof s?s(o):s:u?a.createElement(u,o):d?d(o):null:"function"==typeof s?s(o):null)}))},t}(a.Component);function x(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=x(e);return 0!==t.pathname.indexOf(n)?t:(0,c.Z)({},t,{pathname:t.pathname.substr(n.length)})}function T(e){return"string"==typeof e?e:(0,s.Ep)(e)}function A(e){return function(){(0,l.Z)(!1)}}function L(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(v.Consumer,null,(function(t){t||(0,l.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?_(o.pathname,(0,c.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var O=a.useContext;function N(){return O(b)}function P(){return O(v).location}},72408:(e,t,n)=>{"use strict";var r=n(27418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,s=60110,l=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),s=d("react.context"),l=d("react.forward_ref"),t.Suspense=d("react.suspense"),c=d("react.memo"),u=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g={};function h(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}h.prototype.isReactComponent={},h.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},h.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=h.prototype;var y=v.prototype=new b;y.constructor=v,r(y,h.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,S={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,n){var r,o={},i=null,s=null;if(null!=t)for(r in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!S.hasOwnProperty(r)&&(o[r]=t[r]);var l=arguments.length-2;if(1===l)o.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];o.children=c}if(e&&e.defaultProps)for(r in l=e.defaultProps)void 0===o[r]&&(o[r]=l[r]);return{$$typeof:a,type:e,key:i,ref:s,props:o,_owner:w.current}}function E(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var x=/\/+/g;function C(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,r,i){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case a:case o:l=!0}}if(l)return i=i(l=e),e=""===r?"."+C(l,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(x,"$&/")+"/"),T(i,t,n,"",(function(e){return e}))):null!=i&&(E(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||l&&l.key===i.key?"":(""+i.key).replace(x,"$&/")+"/")+e)),t.push(i)),1;if(l=0,r=""===r?".":r+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=r+C(s=e[c],c);l+=T(s,t,n,u,i)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(s=e.next()).done;)l+=T(s=s.value,t,n,u=r+C(s,c++),i);else if("object"===s)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return l}function A(e,t,n){if(null==e)return e;var r=[],a=0;return T(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var R={current:null};function O(){var e=R.current;if(null===e)throw Error(f(321));return e}var N={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(f(143));return e}},t.Component=h,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=N,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=r({},e.props),i=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)k.call(t,u)&&!S.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){c=Array(u);for(var d=0;d<u;d++)c[d]=arguments[d+2];o.children=c}return{$$typeof:a,type:e.type,key:i,ref:s,props:o,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return O().useCallback(e,t)},t.useContext=function(e,t){return O().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return O().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return O().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return O().useLayoutEffect(e,t)},t.useMemo=function(e,t){return O().useMemo(e,t)},t.useReducer=function(e,t,n){return O().useReducer(e,t,n)},t.useRef=function(e){return O().useRef(e)},t.useState=function(e){return O().useState(e)},t.version="17.0.2"},67294:(e,t,n)=>{"use strict";e.exports=n(72408)},60053:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,u=null,d=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(d,0))},r=function(e,t){u=setTimeout(e,t)},a=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var g=!1,h=null,b=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):v=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==h){var e=t.unstable_now();y=e+v;try{h(!0,e)?k.postMessage(null):(g=!1,h=null)}catch(n){throw k.postMessage(null),n}}else g=!1},n=function(e){h=e,g||(g=!0,k.postMessage(null))},r=function(e,n){b=p((function(){e(t.unstable_now())}),n)},a=function(){f(b),b=-1}}function S(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<x(a,t)))break e;e[r]=t,e[n]=a,n=r}}function _(e){return void 0===(e=e[0])?null:e}function E(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],s=o+1,l=e[s];if(void 0!==i&&0>x(i,n))void 0!==l&&0>x(l,i)?(e[r]=l,e[s]=n,r=s):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==l&&0>x(l,n)))break e;e[r]=l,e[s]=n,r=s}}}return t}return null}function x(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],T=[],A=1,L=null,R=3,O=!1,N=!1,P=!1;function I(e){for(var t=_(T);null!==t;){if(null===t.callback)E(T);else{if(!(t.startTime<=e))break;E(T),t.sortIndex=t.expirationTime,S(C,t)}t=_(T)}}function D(e){if(P=!1,I(e),!N)if(null!==_(C))N=!0,n(M);else{var t=_(T);null!==t&&r(D,t.startTime-e)}}function M(e,n){N=!1,P&&(P=!1,a()),O=!0;var o=R;try{for(I(n),L=_(C);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,R=L.priorityLevel;var s=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?L.callback=s:L===_(C)&&E(C),I(n)}else E(C);L=_(C)}if(null!==L)var l=!0;else{var c=_(T);null!==c&&r(D,c.startTime-n),l=!1}return l}finally{L=null,R=o,O=!1}}var j=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){N||O||(N=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=j,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,i){var s=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?s+i:s:i=s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:l=i+l,sortIndex:-1},i>s?(e.sortIndex=i,S(T,e),null===_(C)&&e===_(T)&&(P?a():P=!0,r(D,i-s))):(e.sortIndex=l,S(C,e),N||O||(N=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},63840:(e,t,n)=>{"use strict";e.exports=n(60053)},96774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<o.length;l++){var c=o[l];if(!s(c))return!1;var u=e[c],d=t[c];if(!1===(a=n?n.call(r,u,d,c):void 0)||void 0===a&&u!==d)return!1}return!0}},36963:(e,t,n)=>{"use strict";n.d(t,{W:()=>a});var r=n(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},53250:(e,t,n)=>{"use strict";var r=n(67294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,s=r.useLayoutEffect,l=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,u=r[1];return s((function(){a.value=n,a.getSnapshot=t,c(a)&&u({inst:a})}),[e,n,t]),i((function(){return c(a)&&u({inst:a}),e((function(){c(a)&&u({inst:a})}))}),[e]),l(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},61688:(e,t,n)=>{"use strict";e.exports=n(53250)},36809:(e,t,n)=>{"use strict";n.d(t,{default:()=>r});const r={title:"NocoDB",tagline:"The Open Source Airtable Alternative",favicon:"img/favicon.ico",url:"https://nocodb.com",baseUrl:"/",organizationName:"nocodb",projectName:"nocodb",onBrokenLinks:"throw",onBrokenMarkdownLinks:"throw",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},plugins:["docusaurus-plugin-sass","plugin-image-zoom",["@docusaurus/plugin-ideal-image",{quality:70,max:1030,min:640,steps:2,disableInDev:!1}]],presets:[["classic",{docs:{sidebarPath:"/Users/rajuudava/NocoDB/nocodb/packages/noco-docs/sidebars.js",routeBasePath:"/",editUrl:"https://github.com/nocodb/nocodb/tree/develop/packages/noco-docs/docs/",lastVersion:"current",versions:{current:{label:"Latest"},"0.109.7":{label:"0.109.7 - Old UI"}}},blog:!1,theme:{customCss:"/Users/rajuudava/NocoDB/nocodb/packages/noco-docs/src/css/custom.scss"},sitemap:{changefreq:"weekly",priority:.5,ignorePatterns:["/tags/**"],filename:"sitemap.xml"}}]],themes:["docusaurus-theme-search-typesense"],themeConfig:{typesense:{typesenseCollectionName:"nocodb-oss-docs-index",typesenseServerConfig:{nodes:[{host:"rqf5uvajyeczwt3xp-1.a1.typesense.net",port:443,protocol:"https"}],apiKey:"lNKDTZdJrE76Sg8WEyeN9mXT29l1xq7Q"},typesenseSearchParameters:{},contextualSearch:!0,searchPagePath:"search"},image:"img/docusaurus-social-card.jpg",navbar:{title:"",logo:{alt:"NocoDB",src:"img/nocodb-full-color.png"},items:[{type:"docsVersionDropdown",position:"right",dropdownItemsBefore:[],dropdownItemsAfter:[]},{href:"https://github.com/nocodb/nocodb",position:"right",className:"header-github-link","aria-label":"GitHub repository"}],hideOnScroll:!1},footer:{style:"dark",logo:{alt:"NocoDB",src:"img/icon.png",width:50},links:[{label:"GitHub",href:"https://github.com/facebook/docusaurus"},{label:"Website",href:"https://nocodb.com/"},{label:"Community",href:"https://community.nocodb.com/"},{label:"Discord",href:"https://discord.gg/5RgZmkW"},{label:"Twitter",href:"https://twitter.com/nocodb"}],copyright:"Copyright \xa9 2023 NocoDB"},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},imageZoom:{selector:".markdown img",options:{margin:96,background:"rgba(0,0,0,0.25)",scrollOffset:0}},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},clientModules:["/Users/rajuudava/NocoDB/nocodb/packages/noco-docs/src/modules/tele.js"],baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},scripts:[],headTags:[],stylesheets:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},30907:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:()=>r})},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},75068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},45987:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(63366);function a(e,t){if(null==e)return{};var n,a,o=(0,r.Z)(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}},63366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},86854:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(40181);function a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||(0,r.Z)(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},40181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(30907);function a(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}},38776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},57529:e=>{"use strict";e.exports={}},16887:e=>{"use strict";e.exports=JSON.parse('{"/search-729":{"__comp":"1a4e3797","__context":{"plugin":"cfe1d2b7"}},"/tags-9ec":{"__comp":"3720c009","__context":{"plugin":"3721b01f"},"tags":"55960ee5"},"/tags/account-settings-c9b":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"3aad05b1"},"/tags/api-tokens-e4c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d9e65f56"},"/tags/attachment-959":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"f4472a32"},"/tags/audit-d88":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d94fff3f"},"/tags/barcode-bde":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"181f370e"},"/tags/bases-22f":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9a7e4ef7"},"/tags/checkbox-f4b":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"10b0edf0"},"/tags/collaboration-38c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"3a7c0cf6"},"/tags/comments-255":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"832fc58a"},"/tags/connect-8b5":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"2f81bee2"},"/tags/cover-image-ca1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"e68e0fff"},"/tags/create-92a":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"fb5c685c"},"/tags/csv-b29":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"a71ccd0b"},"/tags/currency-c91":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"f9538193"},"/tags/custom-types-147":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"0d8de604"},"/tags/dashboard-99f":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"458ed5bd"},"/tags/data-sources-2ad":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"3ac80ba6"},"/tags/date-time-f46":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6a2ab9d1"},"/tags/decimal-448":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"b65801cb"},"/tags/delete-8b9":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"524f61e0"},"/tags/disable-2d1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"a15cb612"},"/tags/display-value-590":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9e1a113d"},"/tags/download-c31":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"cc9fede1"},"/tags/duplicate-d13":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"2d5bd7a1"},"/tags/edit-86a":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"276e2b0f"},"/tags/email-d37":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"45c1aab2"},"/tags/enable-3cb":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"300d0b41"},"/tags/engineering-347":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"70424118"},"/tags/excel-b1a":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6233b6dc"},"/tags/expanded-record-115":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"0938fe36"},"/tags/external-a29":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"f4191957"},"/tags/field-types-428":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"e8cbe097"},"/tags/field-width-411":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"0aea064e"},"/tags/fields-a5c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"83533542"},"/tags/filter-e3c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"e3120721"},"/tags/form-view-44c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"61af7884"},"/tags/formula-e41":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"177ad845"},"/tags/gallery-view-602":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"27b20541"},"/tags/geometry-903":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"006c1c22"},"/tags/getting-started-90c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6a105426"},"/tags/grid-view-608":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d3abb5b7"},"/tags/group-by-a8c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"95677701"},"/tags/hide-cb5":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"4145e2b1"},"/tags/import-563":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9db7fbd6"},"/tags/invite-d63":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"2d8eea4e"},"/tags/json-a19":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"dc1c5b3c"},"/tags/kanban-view-6d9":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"2c8a1eac"},"/tags/links-840":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"f472468a"},"/tags/links-based-types-7df":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"c93390fb"},"/tags/long-text-b67":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6502d10a"},"/tags/lookup-a2f":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"55156658"},"/tags/member-748":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"fc37d7fe"},"/tags/members-656":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"23371042"},"/tags/multi-fields-editor-cc5":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"b6006dd7"},"/tags/multi-select-9aa":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6485a1bf"},"/tags/my-sql-dbb":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"468275e6"},"/tags/number-e29":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"052c7f5b"},"/tags/numerical-types-910":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9a52cc21"},"/tags/open-source-5f2":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"f6aad64f"},"/tags/overview-c58":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"1c2ab191"},"/tags/percent-6e9":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"c2accac3"},"/tags/permissions-8d7":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"c42aaec2"},"/tags/pg-f50":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"2556c3eb"},"/tags/phone-number-3e9":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9aad2067"},"/tags/primary-key-3c7":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"b2206ab4"},"/tags/productivity-hacks-8cf":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"013b8728"},"/tags/profile-8b9":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d5451361"},"/tags/qr-code-0db":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"03af2c79"},"/tags/rating-b13":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"7d5d7de6"},"/tags/record-height-efb":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"324eab63"},"/tags/records-dc5":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"4f577b60"},"/tags/relations-643":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"78ec2f26"},"/tags/remove-1e1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"275c23cd"},"/tags/rename-542":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"147f12f7"},"/tags/reorder-162":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d69d4db4"},"/tags/rest-ap-is-a49":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"83cf658d"},"/tags/roles-9c1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"0bd8cdc6"},"/tags/rollup-174":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9e7567e1"},"/tags/search-93b":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"523749b8"},"/tags/select-based-types-ff3":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"6aee45b4"},"/tags/share-fcd":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"7a733070"},"/tags/share-base-ddd":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"44eb4aec"},"/tags/shortcuts-ac3":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"71f80183"},"/tags/show-hide-2c1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d96af704"},"/tags/single-line-text-eb2":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"df59b4b5"},"/tags/single-select-318":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"c7dc53b4"},"/tags/sort-ee6":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"fb12fd2d"},"/tags/specific-db-type-059":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"b3347e58"},"/tags/swagger-9b1":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"d65a8f51"},"/tags/sync-a81":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"8f10bd27"},"/tags/table-327":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9995b2be"},"/tags/table-details-150":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"a9993c14"},"/tags/table-operations-03c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"5dcc9f57"},"/tags/tables-03c":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"985d43d9"},"/tags/text-based-types-08a":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"44655909"},"/tags/ui-acl-232":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"775b7682"},"/tags/upload-2d5":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"0b97ee01"},"/tags/url-0dc":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"105fb6bf"},"/tags/views-7aa":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"e12d67b0"},"/tags/visibility-95f":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"aa1c05f4"},"/tags/webhook-d1d":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"9db0d30f"},"/tags/workspaces-f31":{"__comp":"df203c0f","__context":{"plugin":"3721b01f"},"tag":"3da8114c"},"/0.109.7-223":{"__comp":"1be78505","__context":{"plugin":"3721b01f"},"versionMetadata":"ae9857c7"},"/0.109.7/-eab":{"__comp":"17896441","content":"1e898359"},"/0.109.7/developer-resources/accessing-apis-238":{"__comp":"17896441","content":"81862c4f"},"/0.109.7/developer-resources/rest-apis-06e":{"__comp":"17896441","content":"a7294da8"},"/0.109.7/developer-resources/sdk-9da":{"__comp":"17896441","content":"855d76bb"},"/0.109.7/developer-resources/upload-via-api-ae3":{"__comp":"17896441","content":"5436f7e6"},"/0.109.7/developer-resources/webhooks-93d":{"__comp":"17896441","content":"529c2981"},"/0.109.7/engineering/architecture-a78":{"__comp":"17896441","content":"71540999"},"/0.109.7/engineering/builds-and-releases-107":{"__comp":"17896441","content":"3615d78a"},"/0.109.7/engineering/development-setup-9b9":{"__comp":"17896441","content":"09ceb1a0"},"/0.109.7/engineering/playwright-b87":{"__comp":"17896441","content":"5ccd3149"},"/0.109.7/engineering/repository-structure-6f0":{"__comp":"17896441","content":"6fe2a298"},"/0.109.7/engineering/translation-02f":{"__comp":"17896441","content":"cc44517e"},"/0.109.7/engineering/unit-testing-d31":{"__comp":"17896441","content":"e4e12989"},"/0.109.7/FAQs-79f":{"__comp":"17896441","content":"4ed1386c"},"/0.109.7/getting-started/demos-8e4":{"__comp":"17896441","content":"87e9af65"},"/0.109.7/getting-started/environment-variables-bea":{"__comp":"17896441","content":"0c130525"},"/0.109.7/getting-started/installation-af5":{"__comp":"17896441","content":"5c9cf4c7"},"/0.109.7/getting-started/upgrading-5e6":{"__comp":"17896441","content":"e28b0c4f"},"/0.109.7/setup-and-usages/account-settings-72e":{"__comp":"17896441","content":"1b14dca8"},"/0.109.7/setup-and-usages/audit-492":{"__comp":"17896441","content":"9c78149d"},"/0.109.7/setup-and-usages/code-snippets-e68":{"__comp":"17896441","content":"615746d5"},"/0.109.7/setup-and-usages/column-operations-b69":{"__comp":"17896441","content":"b444d910"},"/0.109.7/setup-and-usages/column-types-a5e":{"__comp":"17896441","content":"34b71ab6"},"/0.109.7/setup-and-usages/dashboard-ee2":{"__comp":"17896441","content":"a47b7f3a"},"/0.109.7/setup-and-usages/display-value-a30":{"__comp":"17896441","content":"9d4ed5ff"},"/0.109.7/setup-and-usages/expanded-form-b88":{"__comp":"17896441","content":"e631982f"},"/0.109.7/setup-and-usages/formulas-bd0":{"__comp":"17896441","content":"55403ccd"},"/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-free-371":{"__comp":"17896441","content":"2a42d1d2"},"/0.109.7/setup-and-usages/keyboard-maneuver-881":{"__comp":"17896441","content":"90e43058"},"/0.109.7/setup-and-usages/languages-b49":{"__comp":"17896441","content":"408139c4"},"/0.109.7/setup-and-usages/link-to-another-record-6c9":{"__comp":"17896441","content":"86fc9284"},"/0.109.7/setup-and-usages/links-0dc":{"__comp":"17896441","content":"a43060c8"},"/0.109.7/setup-and-usages/lookup-96d":{"__comp":"17896441","content":"2226a1e9"},"/0.109.7/setup-and-usages/meta-management-254":{"__comp":"17896441","content":"d427e024"},"/0.109.7/setup-and-usages/primary-key-0c4":{"__comp":"17896441","content":"654123f4"},"/0.109.7/setup-and-usages/project-settings-dc0":{"__comp":"17896441","content":"d01bd8c5"},"/0.109.7/setup-and-usages/rollup-64f":{"__comp":"17896441","content":"cd725ea4"},"/0.109.7/setup-and-usages/share-base-29d":{"__comp":"17896441","content":"88cc213e"},"/0.109.7/setup-and-usages/share-view-ec1":{"__comp":"17896441","content":"10779e77"},"/0.109.7/setup-and-usages/sync-schema-852":{"__comp":"17896441","content":"c1501dcb"},"/0.109.7/setup-and-usages/table-operations-364":{"__comp":"17896441","content":"0f6b8098"},"/0.109.7/setup-and-usages/team-and-auth-b5f":{"__comp":"17896441","content":"f0eb83f3"},"/0.109.7/setup-and-usages/usage-information-b21":{"__comp":"17896441","content":"824dfda1"},"/0.109.7/setup-and-usages/views-303":{"__comp":"17896441","content":"1e403fb7"},"/-c5d":{"__comp":"1be78505","__context":{"plugin":"3721b01f"},"versionMetadata":"935f2afb"},"/-f1a":{"__comp":"17896441","content":"b22d161b"},"/account-settings/api-tokens-fe5":{"__comp":"17896441","content":"023320c3"},"/account-settings/oss-specific-details-95b":{"__comp":"17896441","content":"00aa88f5"},"/account-settings/profile-page-6de":{"__comp":"17896441","content":"9329f711"},"/automation/webhook/actions-on-webhook-ec5":{"__comp":"17896441","content":"052736b6"},"/automation/webhook/create-webhook-7f4":{"__comp":"17896441","content":"0cab3fcc"},"/automation/webhook/webhook-overview-bdc":{"__comp":"17896441","content":"2b263996"},"/bases/actions-on-base-d6b":{"__comp":"17896441","content":"d767d123"},"/bases/base-collaboration-1d1":{"__comp":"17896441","content":"4bab5100"},"/bases/base-overview-305":{"__comp":"17896441","content":"eb689018"},"/bases/create-base-b75":{"__comp":"17896441","content":"2eb4ec02"},"/bases/import-base-from-airtable-e12":{"__comp":"17896441","content":"ba1d2c5b"},"/bases/share-base-626":{"__comp":"17896441","content":"6f7695df"},"/collaboration/base-collaboration-dab":{"__comp":"17896441","content":"25ad7bcb"},"/collaboration/collaboration-overview-d7f":{"__comp":"17896441","content":"f9241299"},"/collaboration/oss-specific-details-43a":{"__comp":"17896441","content":"576905f1"},"/collaboration/share-base-1db":{"__comp":"17896441","content":"037e2c34"},"/collaboration/share-view-ef9":{"__comp":"17896441","content":"a18f2535"},"/collaboration/workspace-collaboration-952":{"__comp":"17896441","content":"9040003c"},"/data-sources/actions-on-data-sources-9cb":{"__comp":"17896441","content":"7077aad6"},"/data-sources/connect-to-data-source-e61":{"__comp":"17896441","content":"709f8fcb"},"/data-sources/data-source-overview-f29":{"__comp":"17896441","content":"1fb5f022"},"/data-sources/sync-with-data-source-8ff":{"__comp":"17896441","content":"0b819d8c"},"/engineering/architecture-5c0":{"__comp":"17896441","content":"4efb7b3c"},"/engineering/builds-and-releases-bb9":{"__comp":"17896441","content":"0834b429"},"/engineering/development-setup-27a":{"__comp":"17896441","content":"58354ae8"},"/engineering/playwright-09d":{"__comp":"17896441","content":"9906c9d3"},"/engineering/repository-structure-6fc":{"__comp":"17896441","content":"52df1fbb"},"/engineering/translation-2dd":{"__comp":"17896441","content":"8498c216"},"/engineering/unit-testing-24a":{"__comp":"17896441","content":"1b3738fb"},"/engineering/writing-docs-4f2":{"__comp":"17896441","content":"7c4b6d90"},"/FAQs-828":{"__comp":"17896441","content":"20e10381"},"/fields/actions-on-field-f17":{"__comp":"17896441","content":"fb60c522"},"/fields/display-value-828":{"__comp":"17896441","content":"603e048e"},"/fields/field-types/custom-types/attachment-06c":{"__comp":"17896441","content":"e68614dc"},"/fields/field-types/custom-types/barcode-e35":{"__comp":"17896441","content":"4cd0de40"},"/fields/field-types/custom-types/geometry-1a2":{"__comp":"17896441","content":"c1a34d6e"},"/fields/field-types/custom-types/json-bea":{"__comp":"17896441","content":"6d2f78d9"},"/fields/field-types/custom-types/QR-code-4e4":{"__comp":"17896441","content":"525fa7b4"},"/fields/field-types/custom-types/specific-db-type-0cd":{"__comp":"17896441","content":"68fa8000"},"/fields/field-types/date-time-based/date-725":{"__comp":"17896441","content":"14d6025d"},"/fields/field-types/date-time-based/date-time-836":{"__comp":"17896441","content":"ded49de4"},"/fields/field-types/date-time-based/duration-94e":{"__comp":"17896441","content":"60b8b995"},"/fields/field-types/date-time-based/time-d3c":{"__comp":"17896441","content":"2cbe0325"},"/fields/field-types/formula/conditional-expressions-5af":{"__comp":"17896441","content":"18c96d41"},"/fields/field-types/formula/date-functions-798":{"__comp":"17896441","content":"31befc1e"},"/fields/field-types/formula/formula-576":{"__comp":"17896441","content":"0a7c5cbc"},"/fields/field-types/formula/numeric-functions-556":{"__comp":"17896441","content":"224f2b0f"},"/fields/field-types/formula/operators-d96":{"__comp":"17896441","content":"98de4c79"},"/fields/field-types/formula/string-functions-b5c":{"__comp":"17896441","content":"0ac1e38e"},"/fields/field-types/links-based/links-487":{"__comp":"17896441","content":"16d5baaf"},"/fields/field-types/links-based/lookup-861":{"__comp":"17896441","content":"abbfc25c"},"/fields/field-types/links-based/rollup-1f5":{"__comp":"17896441","content":"cd3c4207"},"/fields/field-types/numerical/currency-91a":{"__comp":"17896441","content":"e55064b4"},"/fields/field-types/numerical/decimal-8cc":{"__comp":"17896441","content":"69895f00"},"/fields/field-types/numerical/number-d91":{"__comp":"17896441","content":"e5a54c1b"},"/fields/field-types/numerical/percent-243":{"__comp":"17896441","content":"31f9cd1a"},"/fields/field-types/select-based/checkbox-0c2":{"__comp":"17896441","content":"e11b3e19"},"/fields/field-types/select-based/multi-select-626":{"__comp":"17896441","content":"35af5afe"},"/fields/field-types/select-based/rating-9b3":{"__comp":"17896441","content":"cb2030df"},"/fields/field-types/select-based/single-select-e33":{"__comp":"17896441","content":"14095bfc"},"/fields/field-types/text-based/email-938":{"__comp":"17896441","content":"11d84c26"},"/fields/field-types/text-based/long-text-e24":{"__comp":"17896441","content":"c1dfffdd"},"/fields/field-types/text-based/phonenumber-a44":{"__comp":"17896441","content":"bd02e23f"},"/fields/field-types/text-based/single-line-text-99f":{"__comp":"17896441","content":"22aab9a3"},"/fields/field-types/text-based/url-64a":{"__comp":"17896441","content":"bb53f532"},"/fields/fields-overview-78a":{"__comp":"17896441","content":"310a23cf"},"/fields/multi-fields-editor-6e1":{"__comp":"17896441","content":"da4f93ee"},"/fields/primary-key-40d":{"__comp":"17896441","content":"ec135315"},"/getting-started/keyboard-shortcuts-323":{"__comp":"17896441","content":"0ecc5e11"},"/getting-started/quick-start-92c":{"__comp":"17896441","content":"01865ba3"},"/getting-started/self-hosted/environment-variables-60e":{"__comp":"17896441","content":"4c6b0ee7"},"/getting-started/self-hosted/installation-972":{"__comp":"17896441","content":"2a1ace55"},"/getting-started/self-hosted/upgrading-bfd":{"__comp":"17896441","content":"e56fdc78"},"/getting-started/terminologies-b1a":{"__comp":"17896441","content":"69bee932"},"/records/actions-on-record-632":{"__comp":"17896441","content":"99f674e5"},"/records/create-record-945":{"__comp":"17896441","content":"2888903d"},"/records/expand-record-72d":{"__comp":"17896441","content":"278121a5"},"/records/records-overview-150":{"__comp":"17896441","content":"9dfd9b1b"},"/roles-and-permissions/roles-permissions-overview-57d":{"__comp":"17896441","content":"c76e097b"},"/table-details/table-details-overview-ae5":{"__comp":"17896441","content":"e302cfc9"},"/table-operations/download-8d4":{"__comp":"17896441","content":"6a0eac6b"},"/table-operations/field-operations-c3d":{"__comp":"17896441","content":"22580739"},"/table-operations/filter-96c":{"__comp":"17896441","content":"f7d905ba"},"/table-operations/group-by-893":{"__comp":"17896441","content":"95a14fd1"},"/table-operations/overview-bd0":{"__comp":"17896441","content":"ae730630"},"/table-operations/row-height-3c0":{"__comp":"17896441","content":"69bed9e5"},"/table-operations/search-ed7":{"__comp":"17896441","content":"7dce83b4"},"/table-operations/sort-209":{"__comp":"17896441","content":"8a8a6f17"},"/tables/actions-on-table-05d":{"__comp":"17896441","content":"0f4f52c0"},"/tables/create-table-b64":{"__comp":"17896441","content":"32e0f401"},"/tables/create-table-via-import-e6f":{"__comp":"17896441","content":"70efa42e"},"/tables/import-data-into-existing-table-d91":{"__comp":"17896441","content":"e4367861"},"/tables/table-overview-046":{"__comp":"17896441","content":"7ce1d842"},"/views/actions-on-view-17e":{"__comp":"17896441","content":"7e18769a"},"/views/create-view-2b3":{"__comp":"17896441","content":"61a3d417"},"/views/share-view-97d":{"__comp":"17896441","content":"2bb712de"},"/views/view-types/form-252":{"__comp":"17896441","content":"5af3a857"},"/views/view-types/gallery-004":{"__comp":"17896441","content":"ebb99180"},"/views/view-types/grid-c46":{"__comp":"17896441","content":"0908b333"},"/views/view-types/kanban-b3f":{"__comp":"17896441","content":"1970c274"},"/views/views-overview-ba9":{"__comp":"17896441","content":"bb516362"},"/workspaces/actions-on-workspace-cb7":{"__comp":"17896441","content":"319e5695"},"/workspaces/create-workspace-d20":{"__comp":"17896441","content":"5eaf3a75"},"/workspaces/workspace-collaboration-dd4":{"__comp":"17896441","content":"fe112e79"},"/workspaces/workspace-overview-34e":{"__comp":"17896441","content":"b7abf355"}}')}},e=>{e.O(0,[532],(()=>{return t=90654,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/packages/noco-docs/dist/assets/js/main.ba728574.js.LICENSE.txt b/packages/noco-docs/dist/assets/js/main.ba728574.js.LICENSE.txt new file mode 100644 index 0000000000..eb75d69107 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/main.ba728574.js.LICENSE.txt @@ -0,0 +1,63 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/** + * @license React + * use-sync-external-store-shim.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + */ + +/** @license React v0.20.2 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v17.0.2 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/packages/noco-docs/dist/assets/js/runtime~main.430bde0d.js b/packages/noco-docs/dist/assets/js/runtime~main.430bde0d.js new file mode 100644 index 0000000000..cc3a982f61 --- /dev/null +++ b/packages/noco-docs/dist/assets/js/runtime~main.430bde0d.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,b,c,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var b=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(b.exports,b,b.exports,r),b.loaded=!0,b.exports}r.m=d,r.c=t,e=[],r.O=(a,b,c,f)=>{if(!b){var d=1/0;for(i=0;i<e.length;i++){b=e[i][0],c=e[i][1],f=e[i][2];for(var t=!0,o=0;o<b.length;o++)(!1&f||d>=f)&&Object.keys(r.O).every((e=>r.O[e](b[o])))?b.splice(o--,1):(t=!1,f<d&&(d=f));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[b,c,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var d={};a=a||[null,b({}),b([]),b(b)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=b(t))Object.getOwnPropertyNames(t).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,r.d(f,d),f},r.d=(e,a)=>{for(var b in a)r.o(a,b)&&!r.o(e,b)&&Object.defineProperty(e,b,{enumerable:!0,get:a[b]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,b)=>(r.f[b](e,a),a)),[])),r.u=e=>"assets/js/"+({8:"2556c3eb",43:"01865ba3",53:"935f2afb",65:"16d5baaf",92:"c42aaec2",117:"0ecc5e11",254:"6d2f78d9",274:"b65801cb",305:"86fc9284",332:"70424118",333:"d69d4db4",345:"b3347e58",346:"ebb99180",403:"2b263996",405:"20e10381",481:"9db7fbd6",485:"cd3c4207",604:"0c130525",636:"c1a34d6e",678:"615746d5",753:"9329f711",757:"0b819d8c",771:"e68614dc",800:"cd725ea4",809:"0a7c5cbc",853:"f6aad64f",924:"71f80183",949:"775b7682",1015:"006c1c22",1067:"fb5c685c",1120:"e3120721",1140:"1970c274",1174:"95677701",1179:"35af5afe",1185:"00aa88f5",1193:"7dce83b4",1196:"985d43d9",1205:"d5451361",1245:"2cbe0325",1305:"0834b429",1313:"e302cfc9",1371:"013b8728",1416:"fb12fd2d",1461:"c76e097b",1471:"3721b01f",1484:"023320c3",1499:"81862c4f",1576:"dc1c5b3c",1590:"0b97ee01",1635:"e8cbe097",1641:"bb53f532",1676:"b6006dd7",1705:"d94fff3f",1730:"4cd0de40",1753:"4ed1386c",1771:"2bb712de",1796:"22580739",1802:"55156658",1876:"2eb4ec02",1878:"310a23cf",1944:"5eaf3a75",1949:"cc44517e",1961:"9a7e4ef7",1990:"10779e77",2092:"0d8de604",2237:"458ed5bd",2289:"275c23cd",2384:"b2206ab4",2406:"44655909",2439:"276e2b0f",2533:"3a7c0cf6",2534:"300d0b41",2550:"a47b7f3a",2556:"278121a5",2562:"224f2b0f",2582:"d96af704",2606:"bd02e23f",2636:"2a42d1d2",2642:"324eab63",2650:"55403ccd",2673:"78ec2f26",2773:"b22d161b",2776:"fe112e79",2862:"f0eb83f3",2874:"c2accac3",2922:"4f577b60",3011:"6f7695df",3062:"9a52cc21",3151:"aa1c05f4",3164:"58354ae8",3185:"a43060c8",3238:"27b20541",3259:"2888903d",3312:"a7294da8",3338:"3da8114c",3381:"8498c216",3447:"d3abb5b7",3454:"69bee932",3463:"60b8b995",3469:"525fa7b4",3479:"0cab3fcc",3512:"3aad05b1",3515:"3ac80ba6",3521:"f9241299",3590:"3615d78a",3595:"052c7f5b",3751:"3720c009",3755:"4efb7b3c",3845:"83cf658d",3857:"b7abf355",3869:"69bed9e5",3878:"83533542",3914:"df59b4b5",3939:"5436f7e6",3998:"7ce1d842",4021:"709f8fcb",4033:"5ccd3149",4121:"55960ee5",4158:"6a0eac6b",4166:"c1dfffdd",4177:"7e18769a",4193:"88cc213e",4223:"7a733070",4289:"69895f00",4304:"45c1aab2",4307:"99f674e5",4333:"9d4ed5ff",4341:"e55064b4",4364:"34b71ab6",4507:"87e9af65",4513:"c7dc53b4",4570:"824dfda1",4660:"c93390fb",4743:"d767d123",4769:"9aad2067",4796:"1e403fb7",4815:"70efa42e",4829:"2a1ace55",4851:"eb689018",4882:"da4f93ee",4918:"147f12f7",4936:"09ceb1a0",5017:"7d5d7de6",5055:"e631982f",5150:"524f61e0",5187:"5c9cf4c7",5207:"4bab5100",5221:"d65a8f51",5228:"cc9fede1",5305:"0ac1e38e",5334:"cb2030df",5336:"11d84c26",5375:"23371042",5381:"f4191957",5404:"1b14dca8",5407:"fb60c522",5408:"105fb6bf",5413:"d427e024",5518:"1c2ab191",5580:"7c4b6d90",5631:"2c8a1eac",5650:"e11b3e19",5707:"0bd8cdc6",5772:"576905f1",5822:"0f4f52c0",5837:"2d8eea4e",5922:"14095bfc",5971:"7077aad6",6078:"6502d10a",6090:"9db0d30f",6125:"ec135315",6141:"855d76bb",6157:"0f6b8098",6187:"0908b333",6263:"e4367861",6325:"4c6b0ee7",6570:"03af2c79",6591:"61a3d417",6640:"6485a1bf",6713:"abbfc25c",6714:"ae9857c7",6779:"ba1d2c5b",6786:"181f370e",6799:"31befc1e",6844:"468275e6",6859:"e68e0fff",6907:"22aab9a3",6928:"a18f2535",6999:"9e1a113d",7023:"90e43058",7026:"0aea064e",7075:"0938fe36",7096:"c1501dcb",7130:"31f9cd1a",7152:"529c2981",7219:"6fe2a298",7235:"f9538193",7283:"e5a54c1b",7395:"5dcc9f57",7530:"4145e2b1",7539:"14d6025d",7549:"68fa8000",7592:"6a105426",7621:"61af7884",7647:"6233b6dc",7657:"052736b6",7661:"9906c9d3",7666:"2d5bd7a1",7700:"603e048e",7746:"f7d905ba",7820:"037e2c34",7823:"9e7567e1",7918:"17896441",7920:"1a4e3797",8e3:"e4e12989",8149:"1b3738fb",8248:"408139c4",8252:"177ad845",8379:"d9e65f56",8381:"9c78149d",8395:"52df1fbb",8466:"cfe1d2b7",8511:"9040003c",8535:"6aee45b4",8537:"6a2ab9d1",8704:"1e898359",8750:"a9993c14",8789:"25ad7bcb",8820:"d01bd8c5",8838:"5af3a857",8880:"e28b0c4f",8916:"8f10bd27",8946:"10b0edf0",8954:"71540999",8958:"b444d910",9020:"1fb5f022",9042:"a15cb612",9060:"8a8a6f17",9069:"e56fdc78",9123:"f4472a32",9214:"f472468a",9279:"9dfd9b1b",9383:"a71ccd0b",9449:"18c96d41",9485:"fc37d7fe",9508:"523749b8",9514:"1be78505",9518:"95a14fd1",9542:"319e5695",9552:"2226a1e9",9554:"e12d67b0",9677:"2f81bee2",9693:"44eb4aec",9707:"ae730630",9721:"bb516362",9789:"32e0f401",9850:"9995b2be",9868:"ded49de4",9874:"832fc58a",9893:"98de4c79",9924:"df203c0f",9933:"654123f4"}[e]||e)+"."+{8:"608541f9",43:"4549ac36",53:"56686250",65:"80752d89",92:"c3eaeb58",117:"64d354f8",118:"1d6360db",254:"4528cd42",274:"33fd730a",305:"a1a65b52",332:"3dfed9c1",333:"b43b4016",345:"cdcb3b32",346:"69344f2a",403:"998143cf",405:"8bd204da",481:"df4b0b95",485:"f4ac9c87",604:"033f7aac",636:"647b81cf",678:"b0727925",753:"4f19abf4",757:"0e797db3",771:"3109c382",800:"d30f312a",809:"cdcb8e4d",853:"d7381bfa",924:"484d6afc",949:"558cd548",1015:"c0ac510b",1067:"a9e94066",1120:"4cd01eb7",1140:"334059b6",1144:"8045f07e",1174:"42b2bf38",1179:"be900cd3",1185:"ece547d6",1193:"530372e4",1196:"74530544",1205:"2c2752cf",1245:"3f1214c3",1305:"d504b7b1",1313:"d9580788",1371:"00dc75b7",1416:"7f3d8a16",1461:"cb2c6722",1471:"84024fe5",1484:"23325e99",1499:"a3dbfbec",1576:"db40eb4b",1590:"9be26952",1635:"45e6f0b3",1641:"4d434c9f",1676:"ba122014",1705:"a6583a34",1730:"fe98f46b",1753:"bd3a0126",1771:"1b68f9cc",1796:"f7eb21e2",1802:"9adabe0f",1876:"1f2592f8",1878:"6958a86d",1944:"f80b26bd",1949:"04005ed9",1961:"774c04a9",1990:"f565d9f8",2092:"0a26d9d5",2237:"2b599050",2289:"760a8cbe",2384:"4ae837f6",2406:"dc56ede0",2439:"605c6d82",2533:"494bacc8",2534:"62cb6499",2550:"8d81acfc",2556:"c6034b57",2562:"9484385a",2582:"abc5835c",2606:"e789a668",2636:"2b1dab84",2642:"279737a1",2650:"7e8b474f",2664:"2f6568eb",2673:"dd1ac6e9",2773:"b9dc16ef",2776:"e62e8f04",2862:"c613762a",2874:"f65740b4",2922:"9bdd01f1",3011:"379c6147",3062:"0dd1507a",3151:"378a4f82",3164:"85a279e2",3185:"ee2e4b77",3238:"629af8e5",3259:"9bd1bb79",3312:"f960e7b6",3338:"0474e88b",3381:"483f8889",3447:"3e76ca95",3454:"66b73e69",3463:"008d5a3e",3469:"7415cceb",3479:"a26e8fb8",3512:"f2381f8b",3515:"bb7b70c4",3521:"0971d38c",3590:"3807e0ad",3595:"c97b212d",3751:"99c8d2d6",3755:"be24ab7e",3845:"6228d6ec",3857:"58febfd1",3869:"d9e8352d",3878:"208d10be",3914:"91ec2734",3939:"ae12cb28",3998:"df84ce1d",4021:"280a5e25",4033:"73f6caf1",4121:"9505d06b",4158:"e4313a7a",4166:"09a49a06",4177:"abb76911",4193:"37ccf1de",4223:"20b3d10c",4248:"06b3a45d",4289:"d201c760",4304:"6b478386",4307:"d6be2932",4333:"35c99d38",4341:"f6b45318",4364:"001a0e94",4496:"40495c0d",4507:"48fa1223",4513:"b2f49337",4570:"9af56b1b",4660:"fed1f975",4743:"35c7072a",4769:"54a4562f",4796:"960437d1",4815:"177ad6fa",4829:"e7541d41",4851:"eabcc4dd",4882:"15205e4b",4918:"12c002ab",4936:"051f7a95",5017:"b3fd985c",5055:"bf2deaa3",5150:"b0cdc102",5187:"125f1c65",5207:"4d7693a9",5221:"3fc6745d",5228:"611038ee",5305:"79289da6",5334:"3cfcfbf0",5336:"62b7c503",5375:"6595ff54",5381:"788dba4e",5404:"333819cc",5407:"cccea2fd",5408:"d4c7b2c6",5413:"48b2c64a",5518:"32696376",5580:"1548a3a9",5631:"98d5b5f9",5650:"33ad4247",5707:"7335a712",5772:"68b66089",5822:"8653bf6a",5837:"8c1789a5",5922:"09f9422f",5971:"2c994371",6078:"62d3ac16",6090:"4b7b42d4",6125:"b4b6192c",6141:"e625ba60",6157:"784442da",6187:"4c4be206",6263:"d460a6d1",6325:"ed39b25f",6570:"3092a9bd",6591:"e845dc89",6640:"4bdbdd94",6713:"8291f979",6714:"492b458b",6758:"0b60db9c",6779:"231d6b55",6786:"86d7ec4e",6799:"cf53cc0e",6844:"fec8c4ba",6859:"ebde1054",6907:"c0e16b59",6928:"2f4e7484",6999:"31b44444",7023:"f9839c0b",7026:"44552b5a",7075:"9d5f346a",7096:"9f4cc897",7130:"775da14b",7152:"677765b3",7219:"b467aef4",7235:"9c7eadce",7283:"6ee5594a",7395:"d3132ef5",7530:"c42db197",7539:"cce9c4f9",7549:"51aeb8ad",7592:"d17cfd2e",7621:"3fcf73eb",7647:"7caaef91",7657:"c43758e0",7661:"22de1286",7666:"a60bd427",7700:"2cc120ec",7746:"ac350311",7820:"f2700003",7823:"fa0b282d",7918:"a1973732",7920:"23399ed0",8e3:"d9cb26c6",8149:"ad6025e7",8248:"6b2f2ba2",8252:"b0dd41ef",8379:"f4c9b0b5",8381:"29a2e4eb",8395:"ee608d54",8466:"e157c52a",8511:"21ca2128",8535:"3a6ca145",8537:"b209bc54",8704:"49fc3451",8750:"d9ac97ff",8789:"4e828725",8820:"e0aecdfc",8838:"77b6f910",8880:"752cc726",8916:"f42b91e2",8946:"7e378df6",8954:"772ad50f",8958:"aba4d313",9020:"2932790c",9042:"f7f99640",9059:"f590360f",9060:"b9888edf",9069:"daaabb90",9123:"dd919c72",9214:"5dd0bcc4",9279:"3faaa4fe",9383:"d3daa956",9449:"d9743a27",9485:"55f2b5bf",9508:"09bf2be9",9514:"257bb2d5",9518:"51597f7e",9542:"606ef121",9552:"03795cf8",9554:"19f1f2d2",9677:"3ffbdb86",9693:"a24387e7",9707:"b54065e8",9721:"091774e0",9789:"c4f99129",9850:"987e5cba",9868:"41121548",9874:"ea2a063d",9893:"ccac5542",9924:"9abfc930",9933:"09f2f089",9964:"777c14c3"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},f="noco-docs:",r.l=(e,a,b,d)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==b)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+b){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+b),t.src=e),c[e]=[a];var l=(a,b)=>{t.onerror=t.onload=null,clearTimeout(s);var f=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(b))),a)return a(b)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"7918",22580739:"1796",23371042:"5375",44655909:"2406",55156658:"1802",70424118:"332",71540999:"8954",83533542:"3878",95677701:"1174","2556c3eb":"8","01865ba3":"43","935f2afb":"53","16d5baaf":"65",c42aaec2:"92","0ecc5e11":"117","6d2f78d9":"254",b65801cb:"274","86fc9284":"305",d69d4db4:"333",b3347e58:"345",ebb99180:"346","2b263996":"403","20e10381":"405","9db7fbd6":"481",cd3c4207:"485","0c130525":"604",c1a34d6e:"636","615746d5":"678","9329f711":"753","0b819d8c":"757",e68614dc:"771",cd725ea4:"800","0a7c5cbc":"809",f6aad64f:"853","71f80183":"924","775b7682":"949","006c1c22":"1015",fb5c685c:"1067",e3120721:"1120","1970c274":"1140","35af5afe":"1179","00aa88f5":"1185","7dce83b4":"1193","985d43d9":"1196",d5451361:"1205","2cbe0325":"1245","0834b429":"1305",e302cfc9:"1313","013b8728":"1371",fb12fd2d:"1416",c76e097b:"1461","3721b01f":"1471","023320c3":"1484","81862c4f":"1499",dc1c5b3c:"1576","0b97ee01":"1590",e8cbe097:"1635",bb53f532:"1641",b6006dd7:"1676",d94fff3f:"1705","4cd0de40":"1730","4ed1386c":"1753","2bb712de":"1771","2eb4ec02":"1876","310a23cf":"1878","5eaf3a75":"1944",cc44517e:"1949","9a7e4ef7":"1961","10779e77":"1990","0d8de604":"2092","458ed5bd":"2237","275c23cd":"2289",b2206ab4:"2384","276e2b0f":"2439","3a7c0cf6":"2533","300d0b41":"2534",a47b7f3a:"2550","278121a5":"2556","224f2b0f":"2562",d96af704:"2582",bd02e23f:"2606","2a42d1d2":"2636","324eab63":"2642","55403ccd":"2650","78ec2f26":"2673",b22d161b:"2773",fe112e79:"2776",f0eb83f3:"2862",c2accac3:"2874","4f577b60":"2922","6f7695df":"3011","9a52cc21":"3062",aa1c05f4:"3151","58354ae8":"3164",a43060c8:"3185","27b20541":"3238","2888903d":"3259",a7294da8:"3312","3da8114c":"3338","8498c216":"3381",d3abb5b7:"3447","69bee932":"3454","60b8b995":"3463","525fa7b4":"3469","0cab3fcc":"3479","3aad05b1":"3512","3ac80ba6":"3515",f9241299:"3521","3615d78a":"3590","052c7f5b":"3595","3720c009":"3751","4efb7b3c":"3755","83cf658d":"3845",b7abf355:"3857","69bed9e5":"3869",df59b4b5:"3914","5436f7e6":"3939","7ce1d842":"3998","709f8fcb":"4021","5ccd3149":"4033","55960ee5":"4121","6a0eac6b":"4158",c1dfffdd:"4166","7e18769a":"4177","88cc213e":"4193","7a733070":"4223","69895f00":"4289","45c1aab2":"4304","99f674e5":"4307","9d4ed5ff":"4333",e55064b4:"4341","34b71ab6":"4364","87e9af65":"4507",c7dc53b4:"4513","824dfda1":"4570",c93390fb:"4660",d767d123:"4743","9aad2067":"4769","1e403fb7":"4796","70efa42e":"4815","2a1ace55":"4829",eb689018:"4851",da4f93ee:"4882","147f12f7":"4918","09ceb1a0":"4936","7d5d7de6":"5017",e631982f:"5055","524f61e0":"5150","5c9cf4c7":"5187","4bab5100":"5207",d65a8f51:"5221",cc9fede1:"5228","0ac1e38e":"5305",cb2030df:"5334","11d84c26":"5336",f4191957:"5381","1b14dca8":"5404",fb60c522:"5407","105fb6bf":"5408",d427e024:"5413","1c2ab191":"5518","7c4b6d90":"5580","2c8a1eac":"5631",e11b3e19:"5650","0bd8cdc6":"5707","576905f1":"5772","0f4f52c0":"5822","2d8eea4e":"5837","14095bfc":"5922","7077aad6":"5971","6502d10a":"6078","9db0d30f":"6090",ec135315:"6125","855d76bb":"6141","0f6b8098":"6157","0908b333":"6187",e4367861:"6263","4c6b0ee7":"6325","03af2c79":"6570","61a3d417":"6591","6485a1bf":"6640",abbfc25c:"6713",ae9857c7:"6714",ba1d2c5b:"6779","181f370e":"6786","31befc1e":"6799","468275e6":"6844",e68e0fff:"6859","22aab9a3":"6907",a18f2535:"6928","9e1a113d":"6999","90e43058":"7023","0aea064e":"7026","0938fe36":"7075",c1501dcb:"7096","31f9cd1a":"7130","529c2981":"7152","6fe2a298":"7219",f9538193:"7235",e5a54c1b:"7283","5dcc9f57":"7395","4145e2b1":"7530","14d6025d":"7539","68fa8000":"7549","6a105426":"7592","61af7884":"7621","6233b6dc":"7647","052736b6":"7657","9906c9d3":"7661","2d5bd7a1":"7666","603e048e":"7700",f7d905ba:"7746","037e2c34":"7820","9e7567e1":"7823","1a4e3797":"7920",e4e12989:"8000","1b3738fb":"8149","408139c4":"8248","177ad845":"8252",d9e65f56:"8379","9c78149d":"8381","52df1fbb":"8395",cfe1d2b7:"8466","9040003c":"8511","6aee45b4":"8535","6a2ab9d1":"8537","1e898359":"8704",a9993c14:"8750","25ad7bcb":"8789",d01bd8c5:"8820","5af3a857":"8838",e28b0c4f:"8880","8f10bd27":"8916","10b0edf0":"8946",b444d910:"8958","1fb5f022":"9020",a15cb612:"9042","8a8a6f17":"9060",e56fdc78:"9069",f4472a32:"9123",f472468a:"9214","9dfd9b1b":"9279",a71ccd0b:"9383","18c96d41":"9449",fc37d7fe:"9485","523749b8":"9508","1be78505":"9514","95a14fd1":"9518","319e5695":"9542","2226a1e9":"9552",e12d67b0:"9554","2f81bee2":"9677","44eb4aec":"9693",ae730630:"9707",bb516362:"9721","32e0f401":"9789","9995b2be":"9850",ded49de4:"9868","832fc58a":"9874","98de4c79":"9893",df203c0f:"9924","654123f4":"9933"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,b)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)b.push(c[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var f=new Promise(((b,f)=>c=e[a]=[b,f]));b.push(c[2]=f);var d=r.p+r.u(a),t=new Error;r.l(d,(b=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var f=b&&("load"===b.type?"missing":b.type),d=b&&b.target&&b.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",t.name="ChunkLoadError",t.type=f,t.request=d,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,b)=>{var c,f,d=b[0],t=b[1],o=b[2],n=0;if(d.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(b);n<d.length;n++)f=d[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},b=self.webpackChunknoco_docs=self.webpackChunknoco_docs||[];b.forEach(a.bind(null,0)),b.push=a.bind(null,b.push.bind(b))})()})(); \ No newline at end of file diff --git a/packages/noco-docs/dist/automation/webhook/actions-on-webhook/index.html b/packages/noco-docs/dist/automation/webhook/actions-on-webhook/index.html new file mode 100644 index 0000000000..0d648e1260 --- /dev/null +++ b/packages/noco-docs/dist/automation/webhook/actions-on-webhook/index.html @@ -0,0 +1,16 @@ +<!doctype html> +<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-automation/webhook/actions-on-webhook"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v2.4.1"> +<title data-rh="true">Actions on webhook | NocoDB + + + + +
+
Version: Latest

Actions on webhook

Enable/disable Webhook

To disable a Webhook

  • Open Webhook tab to find list of webhooks created
  • Toggle Activate button to enable/disable

Webhook List

Edit Webhook

To edit a Webhook

  • Open Webhook tab to find list of webhooks created
  • Click on webhook to be edited
  • This will open up the webhook configuration page, which is similar to the page used for creating webhook. Reconfigure the webhook as required
  • Click on Save button to save the changes

Duplicate Webhook

To duplicate a Webhook

  • Open Webhook tab to find list of webhooks created
  • Click on ... actions button associated with the webhook to be duplicate
  • Select Duplicate

Webhook context menu

A copy of the webhook will be created (disabled by default) with a suffix - Copy

Delete Webhook

To delete a Webhook

  • Open Webhook tab to find list of webhooks created
  • Click on ... actions button associated with the webhook to be deleted
  • Select Delete

Webhook context menu

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/automation/webhook/create-webhook/index.html b/packages/noco-docs/dist/automation/webhook/create-webhook/index.html new file mode 100644 index 0000000000..b2d19ee5f7 --- /dev/null +++ b/packages/noco-docs/dist/automation/webhook/create-webhook/index.html @@ -0,0 +1,16 @@ + + + + + +Create webhook | NocoDB + + + + +
+
Version: Latest

Create webhook

Create Webhook

Accessing webhook page

  1. Click on table for which webhook needs to be configured on the left sidebar
  2. Open Details tab in topbar,
  3. Click on Webhooks tab
  4. Click Add New Webhook

Accessing webhook

Configuring webhook

  1. Name of the webhook
  2. Select the event for which webhook needs to be triggered
TriggerDetails
After InsertAfter a single record is inserted
After UpdateAfter a single record is updated
After DeleteAfter a single record is deleted
After Bulk InsertAfter bulk records are inserted
After Bulk UpdateAfter bulk records are updated
After Bulk DeleteAfter bulk records are deleted
  1. Method & URL: Configure the endpoint to which webhook needs to be triggered. Supported methods are GET, POST, DELETE, PUT, HEAD, PATCH
  2. Headers & Parameters: Configure Request headers & parameters (optional)
  3. Condition: Only records meeting the configured criteria will trigger webhook (optional)
  4. Test webhook (with sample payload) to verify if parameter are configured appropriately (optional)
  5. Save the webhook

Configuring webhook

Webhook Response Sample

{
"type": "records.after.insert",
"id": "9dac1c54-b3be-49a1-a676-af388145fa8c",
"data": {
"table_id": "md_xzru7dcqrecc60",
"table_name": "Film",
"view_id": "vw_736wrpoas7tr0c",
"view_name": "Film",
"records": [
{
"FilmId": 1011,
"Title": "FOO",
"Language": {
"LanguageId": 1,
"Name": "English"
},
}
]
}
}
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/automation/webhook/webhook-overview/index.html b/packages/noco-docs/dist/automation/webhook/webhook-overview/index.html new file mode 100644 index 0000000000..8929404300 --- /dev/null +++ b/packages/noco-docs/dist/automation/webhook/webhook-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Webhook overview | NocoDB + + + + +
+
Version: Latest

Webhook overview

You can employ webhooks to notify external systems whenever there are additions, updates, or removals of records within NocoDB. This feature allows you to receive instantaneous notifications for any changes made to your database. NocoDB also offers webhooks for bulk endpoints for creating, updating, or deleting multiple records simultaneously.

Note that, Webhooks currently are specific to associated table.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/actions-on-base/index.html b/packages/noco-docs/dist/bases/actions-on-base/index.html new file mode 100644 index 0000000000..12dae60892 --- /dev/null +++ b/packages/noco-docs/dist/bases/actions-on-base/index.html @@ -0,0 +1,19 @@ + + + + + +Actions on base | NocoDB + + + + +
+
Version: Latest

Actions on base

Base context menu

The base context menu offers a selection of swift actions that can be executed on a base. To access this menu, click on the ellipsis symbol (...) located adjacent to the base name within the left sidebar. +base context menu

Rename base

To modify the name of a base, you can easily do so by following these steps:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Rename option.
  3. Input the new name for the base directly within the field provided and then press the Enter key to confirm and save the updated name.

base context menu

base rename

Star base

You can star a base by following simple steps below:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Add to Starred option.
  3. Subsequently, the designated base will be placed into the "Starred" section, conveniently positioned within the left sidebar.

base context menu

base starred

info

Starred base will appear in both Starred section and All Bases section on the left sidebar.

Remove a base from starred list

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Remove from Starred option.
  3. Subsequently, the designated base will be removed from the Starred section.

image

Duplicate base

To duplicate a base, you can follow these straightforward steps:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Duplicate option.
  3. Optionally, you can configure the duplication process with the following choices: +a) Include data: You have the flexibility to choose whether to duplicate the base with or without its data. +b) Include views: You can decide whether to duplicate the base with or without its views.
  4. Click the Confirm button in the confirmation modal that pops up.
  5. A new base will be created, mirroring the original base's schema and data/views based on the configurations specified in step 3.

base context menu

image

info
  • A duplicate base will be generated within the same workspace as the original base.
  • The duplicated base will be suffixed with Copy in its name.
  • You will be designated as the base owner upon the duplication of the base.
  • Existing base members will not be transferred to the duplicated base.

Delete base

If you determine that a base is no longer necessary, you have the option to permanently remove it from your workspace. Deleting a base will delete all the tables and data associated with it.

danger

This action cannot be undone.

info

Only base owner can delete a workspace.

To delete a base:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Delete option.
  3. Select Delete base button on the confirmation dialog box.

base context menu

base delete

Developer features

Base settings

Some general configurations are available for you to modify within the base settings.

  1. Show M2M tables: Toggle this option to display/hide M2M tables within the left sidebar. Many-to-many relation is supported via a junction table & is hidden by default.
  2. Show NULL in cells: Toggle this option to display/hide NULL values within the cells of the table. This helps differentiate against cells holding EMPTY string.
  3. Show NULL & Empty in Filters: Enable 'additional' filters to differentiate fields containing NULL & Empty Strings. Default support for Blank treats both NULL & Empty strings alike.

To configure base settings, you can follow these steps:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Settings option.

base context menu

bsae settings

REST APIs

NocoDB provides a Swagger UI for each base. To access the Swagger UI, follow these steps:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the REST APIs option.

base context menu

swagger

Relations

NocoDB provides a visual representation of the relations between tables within a base. To access the relations diagram, follow these steps:

  1. Initiate the base context menu by clicking on the ellipses ... located next to the base name within the left sidebar.
  2. In the dropdown menu that appears, choose the Relations option.

base context menu

base relations

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/base-collaboration/index.html b/packages/noco-docs/dist/bases/base-collaboration/index.html new file mode 100644 index 0000000000..1836ce0f99 --- /dev/null +++ b/packages/noco-docs/dist/bases/base-collaboration/index.html @@ -0,0 +1,16 @@ + + + + + +Base collaboration | NocoDB + + + + +
+
Version: Latest

Base collaboration

A member added to a workspace will carry his assigned role specific permissions to all the base with in workspace. To override member permissions to your base, please follow steps outlined below:

  1. Go to the left sidebar and select Base name to access the Base Dashboard.
  2. Click on the Members tab.
  3. Use the dropdown menu to specify the access permissions for the member you wish to collaborate.
  4. Finalize the process by assigning the desired role to the user.

image

More details about roles & permissions can be found here.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/base-overview/index.html b/packages/noco-docs/dist/bases/base-overview/index.html new file mode 100644 index 0000000000..6de602aa8d --- /dev/null +++ b/packages/noco-docs/dist/bases/base-overview/index.html @@ -0,0 +1,36 @@ + + + + + +Base overview | NocoDB + + + + +
+
Version: Latest

Base overview

In NocoDB, bases are the foundational elements that encompass tables, views, forms, and webhooks, +providing a structured framework for data organization and collaborative work. +It's essential to understand that each base is inherently tied to a specific workspace and cannot be transferred between +different workspaces. The creator of a base is designated as the 'base owner,' and this ownership status is +non-transferable, conferring exclusive authority over the base, including the ability to delete it.

Bases also come with their unique set of members and access permissions, which take precedence over any permissions set at the workspace level. +This fine-grained control allows for tailored collaboration and data management within each base. +Importantly, there are no restrictions on the number of members you can invite to a base, fostering open teamwork. +Similarly, you have the freedom to create as many tables as needed within a single base, +offering the scalability required to accommodate diverse datasets and projects.

Base Dashboard

The Base Dashboard serves as the primary landing page for a base, offering users a concise summary of its contents and functionality. +This central hub provides users with swift access to essential features such as base settings and collaboration tools. +To access the Base Dashboard, simply click on the base name located in the left sidebar.

image

The Base Dashboard is organized into three key sections, each serving a distinct purpose:

  1. Table List: This section provides a comprehensive list of all tables within the base, +including those sourced from external data repositories. Users can conveniently access a specific table by clicking +on its name. Tables originating from external sources are clearly highlighted in the list for easy identification.

  2. Base Members: In this section, users can view a roster of members associated with the base, along with their +respective permission levels. It's worth noting that members who are part of the workspace automatically inherit +access permissions at the base level. However, the base owner retains the ability to adjust these permissions, +either increasing or decreasing them. Further details on collaboration management can be found in the dedicated +Base Collaborations section.

  3. Data Sources: NocoDB offers the functionality to connect with external data sources and seamlessly +integrate them as native tables. This section provides a listing of connected data sources, setting the stage +for additional details on this feature, which will be covered in the forthcoming Data Sources section. +This feature empowers users to work with external data as effortlessly as with in-house data tables, enhancing the versatility +and scope of data management within the base.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/create-base/index.html b/packages/noco-docs/dist/bases/create-base/index.html new file mode 100644 index 0000000000..6c9846a04f --- /dev/null +++ b/packages/noco-docs/dist/bases/create-base/index.html @@ -0,0 +1,17 @@ + + + + + +Create base | NocoDB + + + + +
+
Version: Latest

Create base

Create base from scratch

To initiate the creation of a new database from the ground up, follow these steps:

  1. Navigate to the left sidebar and either select the + icon adjacent to Projects or click on the + New Project button.
  2. Input the desired name for the database within the presented pop-up modal.
  3. Conclude the process by clicking on the Create Database button.

image +image

info
  • Upon the creation of the base, you will assume the role of the base owner.
  • Only the base owner possesses the authority to delete a base.
  • It is possible to create multiple bases within a single workspace.

On the successful creation of a base, you will be directed to the Base Dashboard, which serves as the primary landing page for the base. This central hub provides users with swift access to essential features such as base settings and collaboration tools. To access the Base Dashboard, simply click on the base name located in the left sidebar.

Find more details on adding tables to a base in the Tables section.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/import-base-from-airtable/index.html b/packages/noco-docs/dist/bases/import-base-from-airtable/index.html new file mode 100644 index 0000000000..9cced981fd --- /dev/null +++ b/packages/noco-docs/dist/bases/import-base-from-airtable/index.html @@ -0,0 +1,17 @@ + + + + + +Import Airtable to NocoDB | NocoDB + + + + +
+
Version: Latest

Import Airtable to NocoDB

NocoDB offers a streamlined process for seamlessly transferring your Airtable database to various database management systems, including MySQL, Postgres and SQLite, in just a matter of minutes. This feature is particularly useful for users who wish to migrate their Airtable database to a more robust and scalable database management system.

info

Import from Airtable is in beta version. See Importing Airtable To NocoDB for the migration notes.

info

To proceed, you must have valid Airtable Credentials. Ensure you have access to the following information from your Airtable account:

Open the Quick Import- AIRTABLE modal begin the import process

  1. Hover over the base name in the left sidebar, click on the ... icon to open base context menu
  2. Select Import Data from the base context menu
  3. Select Airtable

import data

Alternatively, you can also open the Quick Import- AIRTABLE modal from the Base dashboard

  1. Go to your Base dashboard, click on Import Data

  2. Select Airtable

    import data

    import data

Continue with the following steps on Quick Import- AIRTABLE modal to complete the import process:

  1. Input API key / Personal Access Token
  2. Input shared Base ID / URL
  3. Configure Airtable import options (Optional)
  4. Click Import

import data

info

Wait until Go To Dashboard button is activated on the modal. Import details are captured in log window.

import data

Configuration options

  1. Import Data: If you disable this option, only tables and views will be created (schema), excluding actual data records.
  2. Import Secondary Views: If you disable this option, only the primary grid view for each table will be imported, omitting any secondary views.
  3. Import Rollup Fields: If you disable this option, you can skip the import of Rollup fields.
  4. Import Lookup Fields: If you disable this option, you can skip the import of Lookup fields.
  5. Import Attachments Fields: If you disable this option, you can skip the import of Attachment fields, which typically store file attachments associated with records.
  6. Import Formula Fields: Please be aware that import of formula fields from Airtable is currently not supported.

Get Airtable Credentials

Create Personal Access Token

Here are the steps to generate an Airtable Personal Access Token:

  1. Visit the Airtable Create Tokens page and click the "Create token" button.
  2. Provide a meaningful name for your token in the Token name field.
  3. Choose the necessary access scopes, with a minimum requirement of data.records:read.
  4. Select the specific Base you wish to access with this token.
  5. Confirm your choices by clicking the Create token button.
  6. Copy the newly generated Personal Access Token for your use.

For detailed information, you can refer to the Airtable Personal Access Token guide.

image

image

image

Retrieve API Key

Retrieve Share Base ID / URL

See here for detailed procedures.

  1. Open Share menu in your Project / Base
  2. Open tab Share Publicly
  3. Enable Turn on full base access
  4. Copy generated shared base URL

Shared base

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/bases/share-base/index.html b/packages/noco-docs/dist/bases/share-base/index.html new file mode 100644 index 0000000000..ba8e6fe31a --- /dev/null +++ b/packages/noco-docs/dist/bases/share-base/index.html @@ -0,0 +1,19 @@ + + + + + +Share base | NocoDB + + + + +
+
Version: Latest

Share base

To share a base, follow the steps below:

  1. Navigate to the top right corner of the top navigation bar and click on the Share button.
  2. In the Shared base section, toggle the switch to Enable public access in order to activate the shared base feature.
  3. The generated link for the shared base will be displayed above and can be utilized to share this project with others. To copy the URL, simply click on the Copy Link option.

Share base

Share base

Modify Share base

Amending the Share base setting will render the previously generated Share base link invalid and generate a new link in its place. +Here are the steps to modify it:

  1. Click on the Share button located in the top right corner of the toolbar.
  2. Toggle the option labeled Enable public access to deactivate the base share.
  3. Toggle the same option, Enable public access, to reactivate the base share, subsequently generating a new link.

Enable public access

Disable Share base

Disabling Share base will render the previously generated Share base link invalid +Here are the steps to disable it:

  1. Click on the 'Share' button located in the top right corner of the toolbar.
  2. Toggle the option labeled Enable public access to deactivate the base share.

Enable public access

Share base Access Permissions

The "Shared base" can be configured in two modes:

  1. Viewer - Users with the provided link will have read-only access to the base data.
  2. Editor - Users with the provided link will have read and write access to the base data.

Toggle Enable Editor Access button to configure permissions as desired +Share base edit access

Embeddable Frame

The NocoDB interface can be seamlessly integrated into existing applications through the utilization of the HTML IFRAME attribute. This feature empowers users to embed the NocoDB interface into their applications, allowing for a unified user experience. To generate the embeddable HTML code, follow these steps:

To Generate Embeddable HTML Code:

  1. Click the Share button located in the top right corner of the toolbar.
  2. Within the Shared base link tab, select the button to copy the Embeddable HTML code to your clipboard.

Share base iFrame

Example:

<iframe
class="nc-embed"
src="https://nocodb-nocodb-rsyir.ondigitalocean.app/dashboard/#/nc/base/e3bba9df-4fc1-4d11-b7ce-41c4a3ad6810?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; border: 1px solid #ddd"
>
</iframe>

Embed into application's HTML Body

Sample code with embedded iframe generated above

<!DOCTYPE html>
<html>
<body>
<iframe
class="nc-embed"
src="http://localhost:3000/#/nc/base/7d4b551c-b5e0-41c9-a87b-f3984c21d2c7?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; "
></iframe>
</body>
</html>
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/base-collaboration/index.html b/packages/noco-docs/dist/collaboration/base-collaboration/index.html new file mode 100644 index 0000000000..df8f020a60 --- /dev/null +++ b/packages/noco-docs/dist/collaboration/base-collaboration/index.html @@ -0,0 +1,16 @@ + + + + + +Base collaboration | NocoDB + + + + +
+
Version: Latest

Base collaboration

Inviting members to your base

A member added to a workspace will carry his assigned role specific permissions to all the base with in workspace. To override member permissions to your base, please follow steps outlined below:

  1. Go to the left sidebar and select Base name to access the Base Dashboard.
  2. Click on the Members tab.
  3. Use the dropdown menu to specify the access permissions for the member you wish to collaborate.
  4. Finalize the process by assigning the desired role to the user.

image

More details about roles & permissions can be found here.

Removing members from your base

  1. Go to the left sidebar and select Base name to access the Base Dashboard.
  2. Click on the Members tab.
  3. Use the dropdown menu to specify the access permissions for the member you wish to collaborate.
  4. Assign the No Access role to the user.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/collaboration-overview/index.html b/packages/noco-docs/dist/collaboration/collaboration-overview/index.html new file mode 100644 index 0000000000..fc52f16b22 --- /dev/null +++ b/packages/noco-docs/dist/collaboration/collaboration-overview/index.html @@ -0,0 +1,19 @@ + + + + + +Collaboration overview | NocoDB + + + + +
+
Version: Latest

Collaboration overview

At NocoDB, our passion lies in promoting teamwork, and it's a significant factor contributing to our popularity. Through NocoDB's collaborative functionalities, you have the ability to foster effective task distribution and team communication by extending invitations to others for seamless cooperation.

In this segment, we'll discuss various collaboration features that NocoDB offers.

Workspace collaboration
+Base collaboration
+Share base
+Share view

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/oss-specific-details/index.html b/packages/noco-docs/dist/collaboration/oss-specific-details/index.html new file mode 100644 index 0000000000..a6e4714e0e --- /dev/null +++ b/packages/noco-docs/dist/collaboration/oss-specific-details/index.html @@ -0,0 +1,16 @@ + + + + + +In Open Source | NocoDB + + + + +
+
Version: Latest

In Open Source

Open source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces. And hence, the user management on Open source is different from Cloud hosted solutions. This article details the specifics of User management on Open source.

User Management

Organisation is an workspace equivalent concept in Open-source NocoDB. An organisation can have multiple bases. Permissions within NocoDB are divided into two levels: Organisation level and Base level.

Organisation Level Permissions:

  • Org Level Creator: Allows users to create new bases and access invited bases.
  • Org Level Viewer: Allows users to access invited bases but does not permit the creation of new bases.

Screenshot 2023-08-22 at 5 01 41 PM

Screenshot 2023-08-22 at 5 01 30 PM

Base Level Permissions:

The permissions at base level in Open source NocoDB remain same as cloud solutions. The base level permissions are summarized below:

  • Owner: The user who created the project. A project can have only one owner. The owner persists until the project exists and the role is non-transferable. The owner has access to carry out any operations within the project, including deleting it.
  • Creator: Has access to carry out any operations within the project except deleting the project and removing the "Owner."
  • Editor: Can modify data but cannot modify the schema (add/remove fields, tables, users, and such).
  • Commenter: Can neither modify data nor schema, can only see data and can mark record-level comments.
  • Viewer: Can only see data.

Please note that the above-mentioned Base Level Permissions are additional to the already defined Organisation Level Permissions.

In addition to the previously defined permissions, NocoDB also includes the role of Super Admin. The Super Admin is the first user to sign up on this NocoDB installation. An organisation can have only one Super Admin and this role is non-transferable. The Super Admin will have the equivalent permissions of an "Org Level Creator" and "Owner" for all projects within the organisation.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/share-base/index.html b/packages/noco-docs/dist/collaboration/share-base/index.html new file mode 100644 index 0000000000..88ff4c0331 --- /dev/null +++ b/packages/noco-docs/dist/collaboration/share-base/index.html @@ -0,0 +1,19 @@ + + + + + +Share base | NocoDB + + + + +
+
Version: Latest

Share base

To share a base, follow the steps below:

  1. Navigate to the top right corner of the top navigation bar and click on the Share button.
  2. In the Shared base section, toggle the switch to Enable public access in order to activate the shared base feature.
  3. The generated link for the shared base will be displayed above and can be utilized to share this project with others. To copy the URL, simply click on the Copy Link option.

Share base

Share base

Modify Share base

Amending the Share base setting will render the previously generated Share base link invalid and generate a new link in its place. +Here are the steps to modify it:

  1. Click on the Share button located in the top right corner of the toolbar.
  2. Toggle the option labeled Enable public access to deactivate the base share.
  3. Toggle the same option, Enable public access, to reactivate the base share, subsequently generating a new link.

Enable public access

Disable Share base

Disabling Share base will render the previously generated Share base link invalid +Here are the steps to disable it:

  1. Click on the 'Share' button located in the top right corner of the toolbar.
  2. Toggle the option labeled Enable public access to deactivate the base share.

Enable public access

Share base Access Permissions

The "Shared base" can be configured in two modes:

  1. Viewer - Users with the provided link will have read-only access to the base data.
  2. Editor - Users with the provided link will have read and write access to the base data.

Toggle Enable Editor Access button to configure permissions as desired +Share base edit access

Embeddable Frame

The NocoDB interface can be seamlessly integrated into existing applications through the utilization of the HTML IFRAME attribute. This feature empowers users to embed the NocoDB interface into their applications, allowing for a unified user experience. To generate the embeddable HTML code, follow these steps:

To Generate Embeddable HTML Code:

  1. Click the Share button located in the top right corner of the toolbar.
  2. Within the Shared base link tab, select the button to copy the Embeddable HTML code to your clipboard.

Share base iFrame

Example:

<iframe
class="nc-embed"
src="https://nocodb-nocodb-rsyir.ondigitalocean.app/dashboard/#/nc/base/e3bba9df-4fc1-4d11-b7ce-41c4a3ad6810?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; border: 1px solid #ddd"
>
</iframe>

Embed into application's HTML Body

Sample code with embedded iframe generated above

<!DOCTYPE html>
<html>
<body>
<iframe
class="nc-embed"
src="http://localhost:3000/#/nc/base/7d4b551c-b5e0-41c9-a87b-f3984c21d2c7?embed"
frameBorder="0"
width="100%"
height="700"
style="background: transparent; "
></iframe>
</body>
</html>
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/share-view/index.html b/packages/noco-docs/dist/collaboration/share-view/index.html new file mode 100644 index 0000000000..45c9b37723 --- /dev/null +++ b/packages/noco-docs/dist/collaboration/share-view/index.html @@ -0,0 +1,19 @@ + + + + + +Share view | NocoDB + + + + +
+
Version: Latest

Share view

Generate Share View

  1. Click Share button on the top right of the toolbar
  2. Toggle Enable public viewing to create shared view link
  3. Click Copy button to copy the link to clipboard

share button

shared view

Share view options

Password protection

You can enable Restrict access with a password if you want a password-protected view

password protection

Download options

You can toggle Allow Download button to enable or disable download CSV/XLSX options in the shared view link

download options

Share Form View Options

Form view has additional customizations for shared view. You can enable/disable the following options for shared form view:

  1. Survey mode: This option when enabled, will display the form in survey mode.
  2. RTL Orientation: This option when enabled, will display the form in RTL orientation.
  3. Themes: You can select a theme for the form from the dropdown. +form view options

Access Share View

To access the shared view, please follow the steps below: +Click on the Shared View URL. If the URL is password-protected, you will be prompted to enter the password to unlock it. Please input the required password to proceed.

password modal

Once the password is successfully entered and authenticated, you will gain access to the shared view. +In the event that the URL is not password-protected, you will be directed to the shared view directly, without the need for a password.

share-view

Users with the shared view link can only view the data and cannot make any changes to the view or its content. Records and fields in the shared view will be updated in real-time as changes are made to the original view. Users accessing shared view can apply filters and sort records as per their requirements.

info

Note that, filters & sorts applied to shared view will not be persisted. These filters & sorts will be reset when the shared view is accessed again.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/collaboration/workspace-collaboration/index.html b/packages/noco-docs/dist/collaboration/workspace-collaboration/index.html new file mode 100644 index 0000000000..a81aae48a8 --- /dev/null +++ b/packages/noco-docs/dist/collaboration/workspace-collaboration/index.html @@ -0,0 +1,19 @@ + + + + + +Workspace collaboration | NocoDB + + + + +
+
Version: Latest

Workspace collaboration

note

A comprehensive guide regarding roles and permissions can be accessed here.

Invite members to Workspace

  1. Navigate to the Workspace configuration page by selecting Team & Settings in the left sidebar.
  2. Access the Members tab.
  3. Input the email address of the intended member for the invitation.
  4. Click on Role dropdown menu
  5. Choose the appropriate access permission for the member from the dropdown menu.
  6. Conclude the process by selecting the Add Member(s) button.

image

info

You have the capability to invite multiple members simultaneously by entering their email addresses, separated by commas.

List Workspace members

The Members tab displays a list of users who have been granted access to the workspace. +image

Modify Workspace Member Roles

You can modify the access permissions of members by following these steps:

  1. Access the dropdown menu.
  2. Select the desired new role option. +image

Remove Workspace Members

To remove a member from the workspace, take the following steps:

  1. Click on the vertical ellipses to open the context menu.
  2. Select the Remove User option. +image
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/data-sources/actions-on-data-sources/index.html b/packages/noco-docs/dist/data-sources/actions-on-data-sources/index.html new file mode 100644 index 0000000000..2e06a32240 --- /dev/null +++ b/packages/noco-docs/dist/data-sources/actions-on-data-sources/index.html @@ -0,0 +1,17 @@ + + + + + +Actions on Data sources | NocoDB + + + + +
+
Version: Latest

Actions on Data sources

Edit external database configuration parameters

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Click on Edit icon listed under Actions column for the data source that you wish to access ERD (Relations view) for +Go to Data Sources, click Edit icon, you can re-configure database credentials.
    Please make sure database configuration parameters are valid. Any incorrect parameters could lead to schema loss!

relations

edit db config

Remove data source

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Click on Delete icon listed under Actions column for the data source that you wish to Unlink

datasource unlink

note

Unlinking a data source will not delete the external data source. It will only remove the data source from the current project.

Data source visibility

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Toggle radio button listed under Visibility column for the data source that you wish to hide/un-hide

datasource visibility

UI Access Control

info

UI Access Control is available only in Open Source version of NocoDB.

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Click on UI ACL button listed under Actions column for the data source that you wish to manage UI access control for
  4. On the UI ACL modal, you can see the list of tables available in the data source as rows & roles available as columns. Toggle checkboxes to enable/disable access to tables for specific roles.
  5. Click on Save button to save the changes

ui acl

ui acl

Audit logs

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Click on Audit button listed under Actions column for the data source that you wish to access Audit logs for

audit

audit logs

Relations

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab
  3. Click on Relations button listed under Actions column for the data source that you wish to access ERD (Relations view) for

relations

relations

Junction table names within Relations

  • Enable Show M2M Tables within Project Settings menu
  • Double-click on Show Fields to see additional checkboxes get enabled.
    • Enabling which you should be able to see junction tables and their table names.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/data-sources/connect-to-data-source/index.html b/packages/noco-docs/dist/data-sources/connect-to-data-source/index.html new file mode 100644 index 0000000000..7a0a691c4e --- /dev/null +++ b/packages/noco-docs/dist/data-sources/connect-to-data-source/index.html @@ -0,0 +1,16 @@ + + + + + +Connect to a Data source | NocoDB + + + + +
+
Version: Latest

Connect to a Data source

To connect to an external data source, follow the steps below:

  1. Access Base context menu by clicking on the Base name in the left sidebar

  2. Select Data Sources tab

  3. Click on + New Data Source button

  4. On the pop-up modal, provide the following details:

    Field NameDescription
    Source NameName for this data source for display on NocoDB UI
    Database TypeType of the data source. Currently, NocoDB supports PostgreSQL & MySQL data sources.
    Host AddressHostname of the data source
    Port NumberPort number of the data source
    UsernameUsername to connect to the database
    PasswordPassword to connect to the database
    DatabaseName of the database to connect to
    Schema nameName of the schema to connect to
  5. Click on Test Database Connection button to verify the connection

  6. Wait for the connection to be verified.

  • After connection is successful, Submit button will be enabled.
  • Click on Submit button to save the data source.

data source-1

data source-2

data source-3

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/data-sources/data-source-overview/index.html b/packages/noco-docs/dist/data-sources/data-source-overview/index.html new file mode 100644 index 0000000000..7a168f1c69 --- /dev/null +++ b/packages/noco-docs/dist/data-sources/data-source-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Data sources overview | NocoDB + + + + +
+
Version: Latest

Data sources overview

Overview

NocoDB allows you to connect to external data sources and get a unified spreadsheet view of your data. Activities related to external data sources can be managed from Data Sources tab in Base dashboard.

Data Sources tab includes following functionalities

  1. Connect/manage external data source
  2. UI Access Control
  3. Relations
  4. Audit logs
info

Currently only one external data source can be added per project.

Accessing Data Sources

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Click on Data Sources tab

data source

Learn more about working with Data sources in the following sections:

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/data-sources/sync-with-data-source/index.html b/packages/noco-docs/dist/data-sources/sync-with-data-source/index.html new file mode 100644 index 0000000000..d39178a06d --- /dev/null +++ b/packages/noco-docs/dist/data-sources/sync-with-data-source/index.html @@ -0,0 +1,17 @@ + + + + + +Sync with Data source | NocoDB + + + + +
+
Version: Latest

Sync with Data source

  1. Access Base context menu by clicking on the Base name in the left sidebar
  2. Select Data Sources tab
  3. Click on Sync Metadata button listed under Actions column for the data source that you wish to sync metadata for
  4. Click on Reload button to refresh Sync state (Optional)
  5. Any changes to the metadata identified will be listed in the Sync State column
  6. Click on Sync Now button to sync the metadata changes

sync metadata

sync metadata

After the sync is complete, you can see the updated state in the Sync State column.
+Sync modal also marks Tables metadata is in Sync in the header.

post sync

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/architecture/index.html b/packages/noco-docs/dist/engineering/architecture/index.html new file mode 100644 index 0000000000..adff4dd4a3 --- /dev/null +++ b/packages/noco-docs/dist/engineering/architecture/index.html @@ -0,0 +1,16 @@ + + + + + +Architecture overview | NocoDB + + + + +
+
Version: Latest

Architecture overview

By default, if NC_DB is not specified, then SQLite will be used to store your metadata. We suggest users to separate the metadata and user data in different databases.

image

Project TypeMetadata stored inData stored in
Create new projectNC_DBNC_DB
Create new project with External DatabaseNC_DBExternal Database
Create new project from ExcelNC_DBNC_DB
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/builds-and-releases/index.html b/packages/noco-docs/dist/engineering/builds-and-releases/index.html new file mode 100644 index 0000000000..eccb828d01 --- /dev/null +++ b/packages/noco-docs/dist/engineering/builds-and-releases/index.html @@ -0,0 +1,16 @@ + + + + + +Releases & builds | NocoDB + + + + +
+
Version: Latest

Releases & builds

Builds of NocoDB

There are 3 kinds of docker builds in NocoDB

Below is an overview of how to make these builds and what happens behind the scenes.

Release builds

How to make a release build ?

  • Click NocoDB release action

  • You should see the below screen

    image

  • Change Use workflow from to Branch: master. If you choose the wrong branch, the workflow will be ended.

    image

  • Then there would be two cases - you can either leave target tag and pervious tag blank or manually input some values

  • Target Tag means the target deployment version, while Previous Tag means the latest version as of now. Previous Tag is used for Release Note only - showing the file / commit differences between two tags.

Tagging

The naming convention would be following given the actual release tag is 0.100.0

  • 0.100.0-beta.0 (first version of pre-release)
  • 0.100.0-beta.1 (include bug fix changes on top of the previous version)
  • 0.100.0-beta.2(include bug fix changes on top of the previous version)
  • and so on ...
  • 0.100.0 (actual release)
  • 0.100.1 (minor bug fix release)
  • 0.100.2 (minor bug fix release)

Case 1: Leaving inputs blank

  • If Previous Tag is blank, then the value will be fetched from latest
  • If Target Tag is blank, then the value will be Previous Tag plus one. Example: 0.90.11 (Previous Tag) + 0.0.1 = 0.90.12 (Target Tag)

Case 2: Manually Input

Why? Sometimes we may mess up in NPM deployment. As NPM doesn't allow us to redeploy to the same tag again, in this case we cannot just use the previous tag + 1. Therefore, we need to use previous tag + 2 instead and we manually configure it.

  • After that, click Run workflow to start
  • You can see Summary for the overall job status.
  • Once release-draft-note and release-executables is finished, then go to releases, edit the draft note and save as draft for time being.
    • Example: Adding header, update content if necessary, and click Auto-generate release notes to include more info.
  • Once release-docker is finished, then test it locally first. You'll be expected to see Upgrade Available notification in UI as we haven't published the release note. (the version is retrieved from there)
  • Once everything is finished, then publish the release note and the deployment is considered as DONE.

How does release action work ?

validate-branch

To check if github.ref is master. Otherwise, other branches will be not accepted.

process-input

To enrich target tag or previous tag if necessary.

pr-to-master

Automate a PR from develop to master branch so that we know the actual differences between the previous tag and the current tag. We choose master branch for a deployment base.

release-npm

Build frontend and backend and release them to NPM. The changes during built such as version bumping will be committed and pushed to a temporary branch and an automated PR will be created and merged to master branch.

Note that once you publish with a certain tag, you cannot publish with the same tag again.

release-draft-note

Generate a draft release note. Some actions need to be done after this step.

release-docker

Build docker image and publish it to Docker Hub. It may take around 15 - 30 mins.

close-issues

Open issues marked with label Status: Fixed and Status: Resolved will be closed by bot automatically with comment mentioning the fix is included in which version.

Example:

image

publish-docs

Publish Documentations

update-sdk-path

nocodb-sdk is used in frontend and backend. However, in develop branch, the value would be file:../nocodb-sdk for development purpose (so that the changes done in nocodb-sdk in develop will be included in frontend and backend). During the deployment, the value will be changed to the target tag. This job is to update them back.

sync-to-develop

Once the deployment is finished, there would be some new changes being pushed to master branch. This job is to sync the changes back to develop so that both branch won't have any difference.

Daily builds

What are daily builds ?

  • NocoDB creates every 6 hours from develop branches and publishes as nocodb/nocodb-daily
  • This is so that we can easily try what is in the develop branch easily.

Docker images

  • The docker images will be built and pushed to Docker Hub (See nocodb/nocodb-daily for the full list).

Timely builds

What are timely builds ?

NocoDB has github actions which creates docker and binaries for each PR! And these can be found as a comment on the last commit of the PR.

Example shown below

  • Go to a PR and click on the comment.

    Screenshot 2023-01-23 at 15 46 36
  • Click on the link to copy the docker image and run it locally.

    Screenshot 2023-01-23 at 15 46 55

This is to

  • reduce pull request cycle time
  • allow issue reporters / reviewers to verify the fix without setting up their local machines

Docker images

When a non-draft Pull Request is created, reopened or synchronized, a timely build for Docker would be triggered for the changes only included in the following paths.

  • packages/nocodb-sdk/**
  • packages/nc-gui/**
  • packages/nc-plugin/**
  • packages/nocodb/**

The docker images will be built and pushed to Docker Hub (See nocodb/nocodb-timely for the full list). Once the image is ready, Github bot will add a comment with the command in the pull request. The tag would be <NOCODB_CURRENT_VERSION>-pr-<PR_NUMBER>-<YYYYMMDD>-<HHMM>.

image

Executables or Binaries

Similarly, we provide a timely build for executables for non-docker users. The source code will be built, packaged as binary files, and pushed to Github (See nocodb/nocodb-timely for the full list).

Currently, we only support the following targets:

  • node16-linux-arm64
  • node16-macos-arm64
  • node16-win-arm64
  • node16-linux-x64
  • node16-macos-x64
  • node16-win-x64

Once the executables are ready, Github bot will add a comment with the commands in the pull request.

image

NocoDB creates Docker and Binaries for each PR.

This is to

  • reduce pull request cycle time
  • allow issue reporters / reviewers to verify the fix without setting up their local machines
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/development-setup/index.html b/packages/noco-docs/dist/engineering/development-setup/index.html new file mode 100644 index 0000000000..f3dd03c099 --- /dev/null +++ b/packages/noco-docs/dist/engineering/development-setup/index.html @@ -0,0 +1,16 @@ + + + + + +Development setup | NocoDB + + + + +
+
Version: Latest

Development setup

Clone the repo

git clone https://github.com/nocodb/nocodb
# change directory to the project root
cd nocodb

Install dependencies

# run from the project root
pnpm i

Start Frontend

# run from the project root
pnpm start:frontend
# runs on port 3000

Start Backend

# run from the project root
pnpm start:backend
# runs on port 8080

Any changes made to frontend and backend will be automatically reflected in the browser.

Enabling CI-CD for Draft PR

CI-CD will be triggered on moving a PR from draft state to Ready for review state & on pushing changes to Develop. To verify CI-CD before requesting for review, add label trigger-CI on Draft PR.

Accessing CI-CD Failure Screenshots

For Playwright tests, screenshots are captured on the tests. These will provide vital clues for debugging possible issues observed in CI-CD. To access screenshots, Open link associated with CI-CD run & click on Artifacts

Screenshot 2022-09-29 at 12 43 37 PM

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/playwright/index.html b/packages/noco-docs/dist/engineering/playwright/index.html new file mode 100644 index 0000000000..b6101da38f --- /dev/null +++ b/packages/noco-docs/dist/engineering/playwright/index.html @@ -0,0 +1,16 @@ + + + + + +Playwright E2E testing | NocoDB + + + + +
+
Version: Latest

Playwright E2E testing

How to run tests

All the tests reside in tests/playwright folder.

Make sure to install the dependencies (in the playwright folder):

pnpm --filter=playwright install
pnpm exec playwright install --with-deps chromium

Run Test Server

Start the backend test server (in packages/nocodb folder):

pnpm run watch:run:playwright

Start the frontend test server (in packages/nc-gui folder):

NUXT_PAGE_TRANSITION_DISABLE=true pnpm run dev

Running all tests

For selecting db type, rename .env.example to .env and set E2E_DEV_DB_TYPE to sqlite(default), mysql or pg.

headless mode(without opening browser):

pnpm run test

with browser:

pnpm run test:debug

For setting up mysql(sakila):

docker-compose -f ./tests/playwright/scripts/docker-compose-mysql-playwright.yml  up -d

For setting up postgres(sakila):

docker-compose -f ./tests/playwright/scripts/docker-compose-playwright-pg.yml 

Running individual tests

Add .only to the test you want to run:

test.only('should login', async ({ page }) => {
// ...
})
pnpm run test

Concepts

Independent tests

  • All tests are independent of each other.
  • Each test starts with a fresh project with a fresh sakila database(option to not use sakila db is also there).
  • Each test creates a new user(email as user@nocodb.com) and logs in with that user to the dashboard.

Caveats:

  • Some stuffs are shared i.e, users, plugins etc. So be catious while writing tests touching that. A fix for this is in the works.
  • In test, we prefix email and project with the test id, which will be deleted after the test is done.

What to test

  • UI verification. This includes verifying the state of the UI element, i.e if the element is visible, if the element has a particular text etc.
  • Test should verify all user flow. A test has a default timeout of 60 seconds. If a test is taking more than 60 seconds, it is a sign that the test should be broken down into smaller tests.
  • Test should also verify all the side effects the feature(i.e. On adding a new field type, should verify field deletion as well) will have, and also error cases.
  • Test name should be descriptive. It should be easy to understand what the test is doing by just reading the test name.

Playwright

  • Playwright is a nodejs library for automating chromium, firefox and webkit.
  • For each test, a new browser context is created. This means that each test runs in a new incognito window.
  • For assertion always use expect from @playwright/test library. This library provides a lot of useful assertions, which also has retry logic built in.

Page Objects

  • Page objects are used to abstract over the components/page. This makes the tests more readable and maintainable.
  • All page objects are in tests/playwright/pages folder.
  • All the test related code should be in page objects.
  • Methods should be as thin as possible and its better to have multiple methods than one big method, which improves reusability.

The methods of a page object can be classified into 2 categories:

  • Actions: Performs an UI actions like click, type, select etc. Is also responsible for waiting for the element to be ready and the action to be performed. This included waiting for API calls to complete.
  • Assertions: Asserts the state of the UI element, i.e if the element is visible, if the element has a particular text etc. Use expect from @playwright/test and if not use expect.poll to wait for the assertion to pass.

Writing a test

Let's write a test for testing filter functionality.

For simplicity, we will have DashboardPage implemented, which will have all the methods related to dashboard page and also its child components like Grid, etc.

Create a test suite

Create a new file filter.spec.ts in tests/playwright/tests folder and use setup method to create a new project and user.

import { test, expect } from '@playwright/test';
import setup, { NcContext } from '../setup';

test.describe('Filter', () => {
let context: NcContext;

test.beforeEach(async ({ page }) => {
context = await setup({ page });
})

test('should filter', async ({ page }) => {
// ...
});
});

Create a page object

Since filter is UI wise scoped to a Toolbar , we will add filter page object to ToolbarPage page object.

export class ToolbarPage extends BasePage {
readonly parent: GridPage | GalleryPage | FormPage | KanbanPage;
readonly filter: ToolbarFilterPage;

constructor(parent: GridPage | GalleryPage | FormPage | KanbanPage) {
super(parent.rootPage);
this.parent = parent;
this.filter = new ToolbarFilterPage(this);
}
}

We will create ToolbarFilterPage page object, which will have all the methods related to filter.

export class ToolbarFilterPage extends BasePage {
readonly toolbar: ToolbarPage;

constructor(toolbar: ToolbarPage) {
super(toolbar.rootPage);
this.toolbar = toolbar;
}
}

Here BasePage is an abstract class, which used to enforce structure for all page objects. Thus all page object should inherit BasePage.

  • Helper methods like waitForResponse and getClipboardText (this can be access on any page object, with this.waitForResponse)
  • Provides structure for page objects, enforces all Page objects to have rootPage property, which is the page object created in the test setup.
  • Enforces all pages to have a get method which will return the locator of the main container of that page, hence we can have focused dom selection, i.e.
// This will only select the button inside the container of the concerned page
await this.get().querySelector('button').count();

Writing an action method

This a method which will reset/clear all the filters. Since this is an action method, it will also wait for the delete filter API to return. Ignoring this API call will cause flakiness in the test, down the line.

async resetFilter() {
await this.waitForResponse({
uiAction: async () => await this.get().locator('.nc-filter-item-remove-btn').click(),
httpMethodsToMatch: ['DELETE'],
requestUrlPathToMatch: '/api/v1/db/meta/filters/',
});
}

Writing an assertion/verification method

Here we use expect from @playwright/test library, which has retry logic built in.

import { expect } from '@playwright/test';

async verifyFilter({ title }: { title: string }) {
await expect(
this.get().locator(`[data-testid="nc-fields-menu-${title}"]`).locator('input[type="checkbox"]')
).toBeChecked();
}

Tips to avoid flakiness

  • If an UI action, causes an API call or the UI state change, then wait for that API call to complete or the UI state to change.
  • What to wait out can be situation specific, but in general, is best to wait for the final state to be reached, i.e. in the case of creating filter, while it seems like waiting for the filter API to complete is enough, but after its return the table records are reloaded and the UI state changes, so its better to wait for the table records to be reloaded.

Accessing playwright report in the CI

  • Open Summary tab in the CI workflow in github actions.
  • Scroll down to Artifacts section.
  • Access reports which suffixed with the db type and shard number(corresponding to the CI workerflow name). i.e playwright-report-mysql-2 is for playwright-mysql-2 workflow.
  • Download it and run pnpm install -D @playwright/test && npx playwright show-report ./ inside the downloaded folder.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/repository-structure/index.html b/packages/noco-docs/dist/engineering/repository-structure/index.html new file mode 100644 index 0000000000..840e18316b --- /dev/null +++ b/packages/noco-docs/dist/engineering/repository-structure/index.html @@ -0,0 +1,16 @@ + + + + + +Repository structure | NocoDB + + + + +
+
Version: Latest

Repository structure

We use Lerna to manage multi-packages. We have the following packages.

  • packages/nc-cli : A CLI to create NocoDB app.

  • packages/nocodb-sdk: API client sdk of nocodb.

  • packages/nc-gui: NocoDB Frontend.

  • packages/nc-lib-gui: The build version of nc-gui which will be used in packages/nocodb.

  • packages/nc-plugin: Plugin template.

  • packages/noco-blog: NocoDB Blog which will be auto-released to nocodb/noco-blog.

  • packages/noco-docs: NocoDB Documentation which will be auto-released to nocodb/noco-docs.

  • packages/nocodb: NocoDB Backend, hosted in NPM.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/translation/index.html b/packages/noco-docs/dist/engineering/translation/index.html new file mode 100644 index 0000000000..380dfae9b9 --- /dev/null +++ b/packages/noco-docs/dist/engineering/translation/index.html @@ -0,0 +1,18 @@ + + + + + +i18n translation | NocoDB + + + + +
+
Version: Latest

i18n translation

  • NocoDB supports 30+ foreign languages & community contributions are now simplified via Crowdin.

How to add / edit translations ?

Using Github

  • For English, make changes directly to en.json & commit to develop
  • For any other language, use crowdin option.

Using Crowdin

Screenshot 2022-09-08 at 10 26 23 PM

  • Click the language that you wish to contribute

Screenshot 2022-09-08 at 10 29 56 PM

  • Click the Translate button; this opens up Crowdin Online Editor

Screenshot 2022-09-08 at 10 32 17 PM

  • Select string in English on the left-hand menu bar [1]
  • Propose changes [2]
  • Save [3] +Note: Crowdin provides translation recommendation's as in [4]. Click directly if it's apt +

Screenshot 2022-09-08 at 10 37 38 PM

A GitHub Pull Request will be automatically triggered (periodicity- 6 hours). We will follow up on remaining integration work items.

Reference

Refer following articles to get additional details about Crowdin Portal usage

How to add a new language ?

GitHub changes

  • Update enumeration in enums.ts [packages/nc-gui/lib/enums.ts]
  • Map JSON path in a.i18n.ts [packages/nc-gui/plugins/a.i18n.ts]

Crowdin changes [admin only]

  • Open NocoDB project
  • Click on Language on the home tab
  • Select target language, Update
  • Update array in tests/playwright/tests/language.spec.ts

Screenshot 2022-09-08 at 10 52 59 PM

Screenshot 2022-09-08 at 10 54 04 PM

String Categories

  • General: simple & common tokens (save, cancel, submit, open, close, home, and such)
  • Objects: objects from NocoDB POV (project, table, field, view, page, and such)
  • Title: screen headers (compact) (menu headers, modal headers)
  • Lables: text box/ radio/ field headers (few words) (Labels over textbox, radio buttons, and such)
  • Activity/ actions: work items (few words) (Create Project, Delete Table, Add Record, and such)
  • Tooltip: additional information associated with work items (usually lengthy) (Additional information provided for activity)
  • Placeholder: placeholders associated with various textboxes (Text placeholders)
  • Msg
    • Info: general/success category for everything
    • Error: warnings & errors
    • Toast: pop-up toast messages

Note: string name should be in camelCase. Use above list as priority order in case of ambiguity.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/unit-testing/index.html b/packages/noco-docs/dist/engineering/unit-testing/index.html new file mode 100644 index 0000000000..61a569ad76 --- /dev/null +++ b/packages/noco-docs/dist/engineering/unit-testing/index.html @@ -0,0 +1,19 @@ + + + + + +Writing unit tests | NocoDB + + + + +
+
Version: Latest

Writing unit tests

Unit Tests

  • All individual unit tests are independent of each other. We don't use any shared state between tests.
  • Test environment includes sakila sample database and any change to it by a test is reverted before running other tests.
  • While running unit tests, it tries to connect to mysql server running on localhost:3306 with username root and password password (which can be configured) and if not found, it will use sqlite as a fallback, hence no requirement of any sql server to run tests.

Pre-requisites

  • MySQL is preferred - however tests can fallback on SQLite too

Setup

pnpm --filter=-nocodb install

# add a .env file
cp tests/unit/.env.sample tests/unit/.env

# open .env file
open tests/unit/.env

Configure the following variables

DB_HOST : host +DB_PORT : port +DB_USER : username +DB_PASSWORD : password

Run Tests

pnpm run test:unit

Folder Structure

The root folder for unit tests is packages/nocodb/tests/unit

  • rest folder contains all the test suites for rest apis.
  • model folder contains all the test suites for models.
  • factory folder contains all the helper functions to create test data.
  • init folder contains helper functions to configure test environment.
  • index.test.ts is the root test suite file which imports all the test suites.
  • TestDbMngr.ts is a helper class to manage test databases (i.e. creating, dropping, etc.).

Factory Pattern

  • Use factories for create/update/delete data. No data should be directly create/updated/deleted in the test.
  • While writing a factory make sure that it can be used with as less parameters as possible and use default values for other parameters.
  • Use named parameters for factories.
    createUser({ email, password})
  • Use one file per factory.

Walk through of writing a Unit Test

We will create an Table test suite as an example.

Configure test

We will configure beforeEach which is called before each test is executed. We will use init function from nocodb/packages/nocodb/tests/unit/init/index.ts, which is a helper function which configures the test environment(i.e resetting state, etc.).

init does the following things -

  • It initializes a Noco instance(reused in all tests).
  • Restores meta and sakila database to its initial state.
  • Creates the root user.
  • Returns context which has auth token for the created user, node server instance(app), and dbConfig.

We will use createProject and createProject factories to create a project and a table.

let context;

beforeEach(async function () {
context = await init();

project = await createProject(context);
table = await createTable(context, project);
});

Test case

We will use it function to create a test case. We will use supertest to make a request to the server. We use expect(chai) to assert the response.

it('Get table list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/meta/projects/${project.id}/tables`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list).to.be.an('array').not.empty;
});
info

We can also run individual test by using .only in describe or it function and the running the test command.

it.only('Get table list', async () => {

Integrating the New Test Suite

We create a new file table.test.ts in packages/nocodb/tests/unit/rest/tests directory.

import 'mocha';
import request from 'supertest';
import init from '../../init';
import { createTable, getAllTables } from '../../factory/table';
import { createProject } from '../../factory/project';
import { defaultColumns } from '../../factory/column';
import Model from '../../../../src/lib/models/Model';
import { expect } from 'chai';

function tableTest() {
let context;
let project;
let table;

beforeEach(async function () {
context = await init();

project = await createProject(context);
table = await createTable(context, project);
});

it('Get table list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/meta/projects/${project.id}/tables`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list).to.be.an('array').not.empty;
});
}

export default function () {
describe('Table', tableTests);
}

We can then import the Table test suite to Rest test suite in packages/nocodb/tests/unit/rest/index.test.ts file(Rest test suite is imported in the root test suite file which is packages/nocodb/tests/unit/index.test.ts).

Seeding Sample DB (Sakila)


function tableTest() {
let context;
let sakilaProject: Project;
let customerTable: Model;

beforeEach(async function () {
context = await init();

/******* Start : Seeding sample database **********/
sakilaProject = await createSakilaProject(context);
/******* End : Seeding sample database **********/

customerTable = await getTable({project: sakilaProject, name: 'customer'})
});

it('Get table data list', async function () {
const response = await request(context.app)
.get(`/api/v1/db/data/noco/${sakilaProject.id}/${customerTable.id}`)
.set('xc-auth', context.token)
.send({})
.expect(200);

expect(response.body.list[0]['FirstName']).to.equal('MARY');
});
}
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/engineering/writing-docs/index.html b/packages/noco-docs/dist/engineering/writing-docs/index.html new file mode 100644 index 0000000000..fabdeace9b --- /dev/null +++ b/packages/noco-docs/dist/engineering/writing-docs/index.html @@ -0,0 +1,16 @@ + + + + + +Writing docs | NocoDB + + + + +
+
Version: Latest

Writing docs

This article discusses some of the protocol and conventions to be followed while writing docs.

Folder Structure

  • Docs follow object-oriented approach. Each folder represents an object and each file represents procedures associated with that object.
  • Each folder contains an _category_.json file which contains the metadata for that object.
{
"label": "Engineering",
"collapsible": true,
"collapsed": true
}

File Structure

  • Add following metadata to the top of each file.
---
title: "Writing docs"
description: "Overview to writing docs"
tags: ['Engineering']
keywords: ['Engineering', Writing docs', 'Docs conventions']
---
  • title is the title of the article that appears on the sidebar and on the top of the article.
  • description is the description of the article that appears in search results.
  • tags are the tags associated with the article. Tags are used to group articles together. For example, all articles with the tag Workspaces will be grouped together.
  • keywords are the keywords associated with the article. Keywords are used to improve search results. For example, if the user searches for Create workspace, then the article with the keyword Create workspace will be displayed in the search results.

Nomenclature

  • Folder names & file name are
    • in kebab-case.
    • prefix with a number that represents the order in which the folder/file should be displayed in the sidebar.
    • prefix number is always a 3-digit number.
    • For example, 010.account-settings.
  • Only first letter of the folder/file name is capitalized. Second letter onwards, first letter is capitalized only if it is a proper noun.

Tags

  • First letter of each tag is capitalized.
  • Tags usually are Objects or Actions. Add a tag only if we are sure that the tag will be used in multiple places. Example: 'Create' - we can have Create project, Create user, Create API token etc.

Active Tags

Tags that are currently being used in the docs are listed below. See if you can reuse any of these tags before adding a new tag.

Description

  • Description should be crisp and to the point. Preferably one line.
  • Refer to the description associated with the tag to get an idea of how the description should be.
  • Descriptions appear in the search results (when searched by tags). So, it should be descriptive enough to give the user an idea of what the article is about.

Search by tags

Images

  • Annotated images should be placed in img/v2 folder.
  • For every annotated image, there should be a corresponding unannotated image in the img/v2-unannotated folder.
  • Images are kept in the same folder structure as the docs.
  • Use Skitch for annotations.

Before you commit

  • Use npm run build to build the docs.
  • Ensure that the build is successful & there are no errors/warnings related to missing links, images, etc.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/actions-on-field/index.html b/packages/noco-docs/dist/fields/actions-on-field/index.html new file mode 100644 index 0000000000..c1e22d6d4a --- /dev/null +++ b/packages/noco-docs/dist/fields/actions-on-field/index.html @@ -0,0 +1,17 @@ + + + + + +Actions on field | NocoDB + + + + +
+
Version: Latest

Actions on field

Fields context menu

Fields context menu can be accessed by clicking on the dropdown icon (🔽) next to the field name.
+Fields context menu

Edit

Rename field

  1. Open the field context menu
  2. Click on Edit option.
  3. Enter new field name as required in the Field Name field.
  4. Click on Save Field button.

Rename field

Change field type

  1. Open the field context menu
  2. Click on Edit option.
  3. Select new field type from the Field Type dropdown.
  4. Click on Save Field button.

Change field type

Change default value

  1. Open the field context menu
  2. Click on Edit option.
  3. Enter new default value in the Default Value field. To disable, click on x icon.
  4. Click on Save Field button.

Change default value

Change field width

To adjust the width of the field, hover over the field edge and drag to adjust the width.

Change field width

Hide field

  1. Open the field context menu
  2. Click on Hide Field option
note
  • Hidden fields are not visible in the table view, but will still be accessible for Formulas, Sort, Filter, etc.
  • To un hide a field, use Toolbar > Fields menu
  • Fields can also be marked as hidden from Toolbar > Fields menu

Set as Display value

  1. Open the field context menu
  2. Click on Set as Display Value option.

Refer to Display Value for more details.

Sort Ascending

  1. Open the field context menu
  2. Click on Sort Ascending option.

Sort Descending

  1. Open the field context menu
  2. Click on Sort Descending option.

Duplicate field

  1. Open the field context menu
  2. Click on Duplicate option.

Duplicated field sans the data will be created with suffix _copy in its name & will be placed to the right of the original field.

Insert after a field

  1. Open the field context menu
  2. Click on Insert after option.

New field will be created to the right of the original field.

Insert before a field

  1. Open the field context menu
  2. Click on Insert before option.

New field will be created to the left of the original field.

Delete field

danger

This action cannot be undone.

To delete a field, follow the steps below:

  1. Open the field context menu by clicking on dropdown icon (🔽) .
  2. Click on Delete.
  3. Confirm the deletion by clicking on Delete Field on the confirmation modal.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/display-value/index.html b/packages/noco-docs/dist/fields/display-value/index.html new file mode 100644 index 0000000000..9d41647ebb --- /dev/null +++ b/packages/noco-docs/dist/fields/display-value/index.html @@ -0,0 +1,19 @@ + + + + + +Display value | NocoDB + + + + +
+
Version: Latest

Display Value

The Display Value, as its name suggests, serves as the primary or main value within a record of a table, and it is typically the attribute by which we identify or associate that specific record. While it is advisable for the display value to be linked to a field with unique identifiers, such as a primary key, it's important to note that this uniqueness is not always enforced at the database level.

Use of Display Value

  • Within a spreadsheet, Display Value are always highlighted so that it is easier to recognise what record we are working with.
  • And when Links are created between two tables - it is the Display Value that appears in Linked records modal.

Example: +Display Value highlighted in Actor table +display value

Display Value associated when Links field
+The value shown in Link Records modal when adding a new link is associated records Display value

display value- links field

Set Display Value

Click dropdown icon (🔽) in the target field. Click Set as Display Value.

display value set

info

How is Display Value identified for existing database tables ?

  • It is usually the first field after the primary key which is not a number.
  • If there is no field which is not a number then the field adjacent to primary key is chosen.

Can I change the Display Value to another field within tables ?

  • Yes, you can use the same way mentioned above to set Display Value.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/QR-code/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/QR-code/index.html new file mode 100644 index 0000000000..cda086d4cb --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/QR-code/index.html @@ -0,0 +1,17 @@ + + + + + +QR code | NocoDB + + + + +
+
Version: Latest

QR code

QR code is a custom field type that allows you to generate a QR code from a string value. This is useful for generating QR codes for things like URLs, phone numbers, or other data that can be represented as a string.

The following field types are supported for the reference field:

  • Formula
  • Single Line Text
  • Long Text
  • Phone Number
  • URL
  • Email

Create a QR code field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as QR Code from the dropdown.
  4. Select the field to be used as the source for the QR code.
  5. Click on Save Field button.

image

Cell display

Cell displays the QR code generated from the source field. Click on the cell to open enlarged view of the QR code.

image
+image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/attachment/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/attachment/index.html new file mode 100644 index 0000000000..644322d787 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/attachment/index.html @@ -0,0 +1,17 @@ + + + + + +Attachment | NocoDB + + + + +
+
Version: Latest

Attachment

Attachment fields allow you to upload files to your records. You can upload any file type, and the file will be linked to the record. You can also upload multiple files to a single Attachment field record.

Create an Attachment field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Attachment from the dropdown.
  4. Click on Save Field button.

image

info

Max size for an attachment file is currently limited to 5 MB

Cell display

The cell display for Attachment field is either a clickable preview if file is an image in recognizable format or a file-type icon.
+image

Upload files

To upload files to an Attachment field,

  • Click on the + icon in the cell, choose the file to upload and click on Upload button. OR
  • Drag drop the file to the cell. OR
  • Click on expand icon <>, choose the file to upload or drag-drop file; click on Upload button.

Expand modal

Expand modal for Attachment field displays the list of files uploaded to the field. You can also upload files from the expand modal. To access expand modal, click on the expand icon <> in the cell.

image

Expand modal supports the following actions:

Attach file(s)

  • Click on Attach file(s) button <1>
  • Choose the file(s) to upload

Delete file

  • Click on x icon <2> to the top left of the image card to delete the file

Download file

  • Click on Download button <5> to download the file

Bulk Download file(s)

  • Select the files by clicking on the checkbox <3> to the top left of the image card
  • Click on Bulk Download button <4> to download the selected files

Rename file

  • Click on Rename button <5> to rename the file
  • Enter the new name in the input field
  • Click on Rename button to save the new name
note

Rename file only renames the file in NocoDB display (expand record & tool tip on hover). It does not rename the file in the storage.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/barcode/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/barcode/index.html new file mode 100644 index 0000000000..353f90e325 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/barcode/index.html @@ -0,0 +1,17 @@ + + + + + +Barcode | NocoDB + + + + +
+
Version: Latest

Barcode

Barcode is a custom field type that allows you to generate a barcode from a string value. This is useful for generating barcodes for things like URLs, phone numbers, or other data that can be represented as a string.

image

The following field types are supported for the for reference field:

  • Formula
  • Single Line Text
  • Long Text
  • Phone Number
  • URL
  • Email

Create a barcode field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Barcode from the dropdown.
  4. Select the field to be used as the source for the barcode.
  5. Select the barcode type from the dropdown.
  6. Click on Save Field button.

Cell display

Cell displays the barcode generated from the source field. Click on the cell to open enlarged view of the QR code.

image
+image

Supported barcode types

NocoDB supports the following barcode types for the barcode field type.

  • CODE128
  • EAN
  • EAN-13
  • EAN-8
  • EAN-5
  • EAN-2
  • UPC (A)
  • CODE39
  • ITF-14
  • MSI
  • Pharma code
  • Coda bar
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/geometry/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/geometry/index.html new file mode 100644 index 0000000000..2d0931740d --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/geometry/index.html @@ -0,0 +1,16 @@ + + + + + +Geometry | NocoDB + + + + + + + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/json/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/json/index.html new file mode 100644 index 0000000000..1e7953dcbd --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/json/index.html @@ -0,0 +1,16 @@ + + + + + +JSON | NocoDB + + + + +
+
Version: Latest

JSON

JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.

Create a JSON field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as JSON from the dropdown.
  4. Click on Save Field button.

image

Cell display

Cell displays the JSON data stored in the field. Click on expand record icon to open the JSON data in an editor modal.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/custom-types/specific-db-type/index.html b/packages/noco-docs/dist/fields/field-types/custom-types/specific-db-type/index.html new file mode 100644 index 0000000000..91c0d7ec07 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/custom-types/specific-db-type/index.html @@ -0,0 +1,16 @@ + + + + + +Specific DB type | NocoDB + + + + +
+
Version: Latest

Specific DB type

Create a Specific DB Type field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Specific DB Type from the dropdown.
  4. Provide DB specific data type configurations
  5. Click on Save Field button.

image

note

Specific DB type is available only for external Data source connections

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/date-time-based/date-time/index.html b/packages/noco-docs/dist/fields/field-types/date-time-based/date-time/index.html new file mode 100644 index 0000000000..3c4f12aa7a --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/date-time-based/date-time/index.html @@ -0,0 +1,16 @@ + + + + + +Date Time | NocoDB + + + + +
+
Version: Latest

Date Time

Date Time field type is used to store both date and time values in a single field.

Create a date time field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as DateTime from the dropdown.
  4. Configure Date Format
  5. Configure Time Format
  6. Configure default value (Optional)
  7. Click on Save Field button.

image

Supported date formats

FormatExample
YYYY-MM-DD2023-09-22
YYYY/MM/DD2023/09/22
DD-MM-YYYY22-09-2023
MM-DD-YYYY09-22-2023
DD/MM/YYYY22/09/2023
MM/DD/YYYY09/22/2023
DD MM YYYY22 09 2023
MM DD YYYY09 22 2023
YYYY MM DD2023 09 22

Supported time formats

FormatExample
HH:mm:ss12:45:30
HH:mm14:20
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/date-time-based/date/index.html b/packages/noco-docs/dist/fields/field-types/date-time-based/date/index.html new file mode 100644 index 0000000000..0e6304614f --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/date-time-based/date/index.html @@ -0,0 +1,16 @@ + + + + + +Date | NocoDB + + + + +
+
Version: Latest

Date

Date field type is used to store date values. NocoDB supports a wide range of date formats, as detailed in the table below.

Create a date field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Date from the dropdown.
  4. Configure Date Format
  5. Configure default value (Optional)
  6. Click on Save Field button.

image

Supported date formats

FormatExample
YYYY-MM-DD2023-09-22
YYYY/MM/DD2023/09/22
DD-MM-YYYY22-09-2023
MM-DD-YYYY09-22-2023
DD/MM/YYYY22/09/2023
MM/DD/YYYY09/22/2023
DD MM YYYY22 09 2023
MM DD YYYY09 22 2023
YYYY MM DD2023 09 22
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/date-time-based/duration/index.html b/packages/noco-docs/dist/fields/field-types/date-time-based/duration/index.html new file mode 100644 index 0000000000..4db19aefe8 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/date-time-based/duration/index.html @@ -0,0 +1,16 @@ + + + + + +Duration | NocoDB + + + + +
+
Version: Latest

Duration

Duration field type is used to store duration of time in seconds or minutes. Different formats are supported by NocoDB, as detailed in the table below.

Create a duration field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Duration from the dropdown.
  4. Configure Duration Format
  5. Configure default value (Optional)
  6. Click on Save Field button.

image

Supported duration formats

FormatExample
HH:mm14:20
HH:mm:ss12:45:30
HH:mm:ss.s12:45:30.5
HH:mm.ss.ss12:45.30.50
HH:mm.ss.sss12:45.30.500
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/date-time-based/time/index.html b/packages/noco-docs/dist/fields/field-types/date-time-based/time/index.html new file mode 100644 index 0000000000..2aabf51e88 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/date-time-based/time/index.html @@ -0,0 +1,16 @@ + + + + + +Time | NocoDB + + + + +
+
Version: Latest

Time

Time field type is used to store time values in a single field. Time formats supported by NocoDB are listed in the table below.

Create a time field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional)
  3. Select the field type as Time from the dropdown.
  4. Configure Time Format
  5. Configure default value (Optional)
  6. Click on Save Field button.

image

Supported time formats

FormatExample
HH:mm:ss12:45:30
HH:mm14:20
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/conditional-expressions/index.html b/packages/noco-docs/dist/fields/field-types/formula/conditional-expressions/index.html new file mode 100644 index 0000000000..b48a869aa1 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/conditional-expressions/index.html @@ -0,0 +1,16 @@ + + + + + +Conditional expressions | NocoDB + + + + +
+
Version: Latest

Conditional expressions

Conditional expressions

NameSyntaxSampleOutput
IFIF(expr, successCase, elseCase)IF({field} > 1, Value1, Value2)successCase if expr evaluates to TRUE, elseCase otherwise
SWITCHSWITCH(expr, [pattern, value, ..., default])SWITCH({field}, 1, 'One', 2, 'Two', '--')Switch case value based on expr output
ANDAND(expr1, [expr2,...])AND({field} > 2, {field} < 10)TRUE if all expr evaluate to TRUE
OROR(expr1, [expr2,...])OR({field} > 2, {field} < 10)TRUE if at least one expr evaluates to TRUE
tip

Logical operators, along with Numerical operators can be used to build conditional expressions.

Examples:

IF({marksSecured} > 80, "GradeA", "GradeB")  
SWITCH({quarterNumber},  
1, 'Jan-Mar',
2, 'Apr-Jun',
3, 'Jul-Sep',
4, 'Oct-Dec',
'INVALID'
)
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/date-functions/index.html b/packages/noco-docs/dist/fields/field-types/formula/date-functions/index.html new file mode 100644 index 0000000000..adeb960a31 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/date-functions/index.html @@ -0,0 +1,16 @@ + + + + + +Date functions | NocoDB + + + + +
+
Version: Latest

Date functions

NameSyntaxSampleOutputRemark
NOWNOW()NOW()2022-05-19 17:20:43Returns the current time and day
IF(NOW() < {DATE_COL}, "true", "false")IF(NOW() < date, "true", "false")If current date is less than {DATE_COL}, it returns true. Otherwise, it returns false.DateTime fields and negative values are supported.
DATEADDDATEADD(date \| datetime, value, ["day" \| "week" \| "month" \| "year"])DATEADD(date, 1, 'day')Supposing {DATE_COL} is 2022-03-14. The result is 2022-03-15.DateTime fields and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'day')
DATEADD(date, 1, 'week')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-03-21 03:14.DateTime fields and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'week')
DATEADD(date, 1, 'month')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2022-04-14 03:14.DateTime fields and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'month')
DATEADD(date, 1, 'year')Supposing {DATE_COL} is 2022-03-14 03:14. The result is 2023-03-14 03:14.DateTime fields and negative values are supported. Example: DATEADD(DATE_TIME_COL, -1, 'year')
IF(NOW() < DATEADD(date,10,'day'), "true", "false")If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false.DateTime fields and negative values are supported.
IF(NOW() < DATEADD(date,10,'day'), "true", "false")If the current date is less than {DATE_COL} plus 10 days, it returns true. Otherwise, it returns false.DateTime fields and negative values are supported.
DATETIME_DIFFDATETIME_DIFF(date, date, ["milliseconds" \| "ms" \| "seconds" \| "s" \| "minutes" \| "m" \| "hours" \| "h" \| "days" \| "d" \| "weeks" \| "w" \| "months" \| "M" \| "quarters" \| "Q" \| "years" \| "y"])DATETIME_DIFF("2022/10/14", "2022/10/15", "second")Supposing {DATE_COL_1} is 2017-08-25 and {DATE_COL_2} is 2011-08-25. The result is 86400.Compares two dates and returns the difference in the unit specified. Positive integers indicate the second date being in the past compared to the first and vice versa for negative ones.
WEEKDAY(NOW(), "sunday")If today is Monday, it returns 1Get the week day of NOW() with the first day set as sunday
WEEKDAYWEEKDAY(date, [startDayOfWeek])WEEKDAY(NOW())If today is Monday, it returns 0Returns the day of the week as an integer between 0 and 6 inclusive starting from Monday by default. You can optionally change the start day of the week by specifying in the second argument
WEEKDAY(NOW(), "sunday")If today is Monday, it returns 1Get the week day of NOW() with the first day set as sunday
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/formula/index.html b/packages/noco-docs/dist/fields/field-types/formula/formula/index.html new file mode 100644 index 0000000000..391e54967b --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/formula/index.html @@ -0,0 +1,16 @@ + + + + + +Formula | NocoDB + + + + +
+
Version: Latest

Formula

Create a formula field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Formula from the dropdown.
  4. Insert required formula
  5. Click on Save Field button.

image

tip
  • You can use explicit numerical values/ strings as needed, e.g. 123 (numeric) or "123" (string).
  • You can reference field names in equation with {}, e.g. {field name}
  • Nested formula (formula equation referring to another formula field) is supported
note

Unlike other field types, formula cells cannot be modified by double-clicking since the value is generated based on the formula.

image

Supported formula functions

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/numeric-functions/index.html b/packages/noco-docs/dist/fields/field-types/formula/numeric-functions/index.html new file mode 100644 index 0000000000..5639b3d3ac --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/numeric-functions/index.html @@ -0,0 +1,16 @@ + + + + + +Numeric functions | NocoDB + + + + +
+
Version: Latest

Numeric functions

Numeric functions

NameSyntaxSampleOutput
ABSABS(value)ABS({field})Absolute value of the input parameter
ADDADD(value1,[value2,...])ADD({field1}, {field2})Sum of input parameters
AVGAVG(value1,[value2,...])AVG({field1}, {field2})Average of input parameters
CEILINGCEILING(value)CEILING({field})Rounded next largest integer value of input parameter
EXPEXP(value)EXP({field})Exponential value of input parameter (e^x)
FLOORFLOOR(value)FLOOR({field})Rounded largest integer less than or equal to input parameter
INTINT(value)INT({field})Integer value of input parameter
LOGLOG([base], value)LOG(10, {field})Logarithm of input parameter to the base (default = e) specified
MAXMAX(value1,[value2,...])MAX({field1}, {Field2}, {Field3})Maximum value amongst input parameters
MINMIN(value1,[value2,...])MIN({Field1}, {Field2}, {Field3})Minimum value amongst input parameters
MODMOD(value1, value2)MOD({Field}, 2)Remainder after integer division of input parameters
POWERPOWER(base, exponent)POWER({Field}, 3)base to the exponent power, as in base ^ exponent
ROUNDROUND(value, precision)ROUND({Field}, 3)Round input value to decimal place specified by precision (Nearest integer if precision not provided)
SQRTSQRT(value)SQRT({Field})Square root of the input parameter
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/operators/index.html b/packages/noco-docs/dist/fields/field-types/formula/operators/index.html new file mode 100644 index 0000000000..c90b057b8e --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/operators/index.html @@ -0,0 +1,17 @@ + + + + + +Numeric and Logical Operators | NocoDB + + + + +
+
Version: Latest

Numeric and Logical Operators

Numeric operators

OperatorSampleDescription
+{field1} + {field2} + 2Addition of numeric values
-{field1} - {field2}Subtraction of numeric values
*{field1} * {field2}Multiplication of numeric values
/{field1} / {field2}Division of numeric values
tip

To change the order of arithmetic operation, you can use round bracket parenthesis ().
+Example: ({field1} + ({field2} * {field3}) / (3 - $field4$ ))

Logical operators

OperatorSampleDescription
<{field1} < {field2}Less than
>{field1} > {field2}Greater than
<={field1} <= {field2}Less than or equal to
>={field1} >= {field2}Greater than or equal to
=={field1} == {field2}Equal to
!={field1} != {field2}Not equal to
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/formula/string-functions/index.html b/packages/noco-docs/dist/fields/field-types/formula/string-functions/index.html new file mode 100644 index 0000000000..5d2948aa2d --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/formula/string-functions/index.html @@ -0,0 +1,16 @@ + + + + + +String functions | NocoDB + + + + +
+
Version: Latest

String functions

String functions

NameSyntaxSampleOutput
CONCATCONCAT(str1, [str2,...])CONCAT({field1}, ' ', {field2})Concatenated string of input parameters
LEFTLEFT(str1, n)LEFT({field}, 3)n characters from the beginning of input parameter
LENLEN(str)LEN({field})Input parameter character length
LOWERLOWER(str)LOWER({field})Lower case converted string of input parameter
MIDMID(str, position, [count])MID({field}, 3, 2)Alias for SUBSTR
REPEATREPEAT(str, count)REPEAT({field}, 2)Specified copies of the input parameter string concatenated together
REPLACEREPLACE(str, srchStr, rplcStr)REPLACE({field}, 'int', 'num')String, after replacing all occurrences of srchStr with rplcStr
RIGHTRIGHT(str, n)RIGHT({field}, 3)n characters from the end of input parameter
SEARCHSEARCH(str, srchStr)SEARCH({field}, 'str')Index of srchStr specified if found, 0 otherwise
SUBSTRSUBTR(str, position, [count])SUBSTR({field}, 3, 2)Substring of length 'count' of input string, from the postition specified
TRIMTRIM(str)TRIM({field})Remove trailing and leading whitespaces from input parameter
UPPERUPPER(str)UPPER({field})Upper case converted string of input parameter
URLURL(str)URL({field})Convert to a hyperlink if it is a valid URL
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/links-based/links/index.html b/packages/noco-docs/dist/fields/field-types/links-based/links/index.html new file mode 100644 index 0000000000..e057e3f485 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/links-based/links/index.html @@ -0,0 +1,17 @@ + + + + + +Links | NocoDB + + + + +
+
Version: Latest

Links

Links field type is used to establish relationship between tables & create links to other records. +NocoDB supports following types of relations:

  • Has-Many - A record in one table can have multiple records in another table.
    • Example: A Country can have multiple Cities.
  • Belongs-to - Multiple records in one table can have a single record in another table.
    • Example: A City Belongs-to a Country.
  • Many-to-Many - Multiple records in one table can have multiple records in another table.
    • Example: A Student can have multiple Subjects & a Subject can have multiple Students.
note
  • Links can be created only between tables in the same database.
  • Self-referencing links are supported. (Link to the same table)
  • For every Has-Many relation defined, NocoDB augments Belongs-to relationship field in the adjacent table automatically
  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Links from the dropdown.
  4. Select the relation type : Either Has-Many or Many-to-Many.
  5. Select the table to which the relation is to be established with.
  6. Configure label to be used for display in the cell. Defaults to Link, Links (Optional).
  7. Click on Save Field button.

image

Cell display

The cell will display number of links for a record to the related table.

image

Clicking on the link-text will open a Linked Records modal with the list of links & associated additional information.

List linked records

image

A brief note about the modal components:

  1. This modal is displaying linked records for PENELOPE
  2. Icon represents Many-to-Many relation
  3. Linked records belong to Film table
  4. Search bar, to narrow down the list of linked records displayed
  5. List (cards) of linked records
  6. To view additional information (expanded record), hover on the card & click on the <> icon
  7. Indicates total records linked
  8. Pagination bar
  9. Click on + Link more Records button to add new links : Read more

Modal to add new links can be opened by

  • Clicking on + Link more Records button in the Linked Records modal
  • Clicking on the + icon in the cell (appears on clicking on the cell)

image

A brief note about the modal components:

  1. Links being created are for PENELOPE
  2. Icon represents Many-to-Many relation
  3. Linked records belong to Film table
  4. Search bar, to narrow down the list of records displayed
  5. Linked record card is displayed in blue color
  6. Records available for link are displayed in white color; use expand icon on the cord to view additional information
  7. Indicates total records linked (including the ones being linked)
  8. Pagination bar
info

Multiple records can be linked at once.

To unlink a record, open the Linked Records modal & click on the card of the record to be unlinked.

info

Multiple records can be unlinked at once.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/links-based/lookup/index.html b/packages/noco-docs/dist/fields/field-types/links-based/lookup/index.html new file mode 100644 index 0000000000..1db876ac49 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/links-based/lookup/index.html @@ -0,0 +1,16 @@ + + + + + +Lookup | NocoDB + + + + +
+
Version: Latest

Lookup

Lookup fields help bring additional field information from related table into the current table. This is useful when you want to display additional information about a record in a table. For example, if you have a table of Orders and a table of Customers, you can use a Lookup field to display the customer's name and address in the Orders table.

note
  • Lookup fields are read-only. You cannot edit the values in a lookup field.
  • Lookup fields are available only for Belongs-to relational links in hosted cloud version. The additional processing complexity for Has-many and Many-to-many relational links outweighs the benefits of having lookup fields for these links. OSS will continue to support lookup fields for all relational links.

Create a Lookup Field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Lookup from the dropdown.
  4. Select the link field from the dropdown. This is the field that links the current table to the related table.
  5. Select the field for display from the dropdown. This is the field that will be displayed in the current table.
  6. Click on Save Field button.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/links-based/rollup/index.html b/packages/noco-docs/dist/fields/field-types/links-based/rollup/index.html new file mode 100644 index 0000000000..1b3ce79784 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/links-based/rollup/index.html @@ -0,0 +1,16 @@ + + + + + +Rollup | NocoDB + + + + +
+
Version: Latest

Rollup

Rollup fields are used to aggregate data from fields in the related table. Often used to calculate totals, averages, and other aggregate data.

Create a Rollup Field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Lookup from the dropdown.
  4. Select the link field from the dropdown. This is the field that links the current table to the related table.
  5. Select the field for display from the dropdown. This is the field that will be displayed in the current table.
  6. Select the aggregation function from the dropdown. This is the function that will be used to aggregate the data.
  7. Click on Save Field button.

image

Aggregation Functions

Here's a table with brief descriptions for each of the aggregation functions supported by NocoDB:

Aggregation FunctionDescription
CountCounts the number of records in a dataset.
MinimumRetrieves the minimum value from a dataset.
MaximumRetrieves the maximum value from a dataset.
AverageCalculates the average value in a dataset.
SumAdds up all the values in a dataset.
Count DistinctCounts the number of distinct values in a dataset.
Sum DistinctAdds up all the distinct values in a dataset.
Average DistinctCalculates the average of distinct values in a dataset.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/numerical/currency/index.html b/packages/noco-docs/dist/fields/field-types/numerical/currency/index.html new file mode 100644 index 0000000000..b624ac2d39 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/numerical/currency/index.html @@ -0,0 +1,16 @@ + + + + + +Currency | NocoDB + + + + +
+
Version: Latest

Currency

Currency field type is used to store currency values. It is a numerical field with additional provision to set the currency symbol in display.

Create field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Currency from the dropdown.
  4. Configure Currency Locale : defaults to en-US
  5. Configure Currency Symbol : defaults to $
  6. Set default value for the field (Optional).
  7. Click on Save Field button.

image

Cell display

image

Supported locales

https://www.npmjs.com/package/locale-codes#locale-list

note

NocoDB adheres to ISO639-1 standard for locale codes.

Supported currencies

AEDAFNALLAMDANGAOA
ARSAUDAWGAZNBAMBBD
BDTBGNBHDBIFBMDBND
BOBBOVBRLBSDBTNBWP
BYRBZDCADCDFCHECHF
CHWCLFCLPCNYCOPCOU
CRCCUPCVECYPCZKDJF
DKKDOPDZDEEKEGPERN
ETBEURFJDFKPGBPGEL
GHCGIPGMDGNFGTQGYD
HKDHNLHRKHTGHUFIDR
ILSINRIQDIRRISKJMD
JODJPYKESKGSKHRKMF
KPWKRWKWDKYDKZTLAK
LBPLKRLRDLSLLTLLVL
LYDMADMDLMGAMKDMMK
MNTMOPMROMTLMURMVR
MWKMXNMXVMYRMZNNAD
NGNNIONOKNPRNZDOMR
PABPENPGKPHPPKRPLN
PYGQARROLRONRSDRUB
RWFSARSBDSCRSDDSEK
SGDSHPSITSKKSLLSOS
SRDSTDSYPSZLTHBTJS
TMMTNDTOPTRYTTDTWD
TZSUAHUGXUSDUSNUSS
UYUUZSVEBVNDVUVWST
XAFXAGXAUXBAXBBXBC
XBDXCDXDRXFOXFUXOF
XPDXPFXPTXTSXXXYER
ZARZMKZWD

Similar numerical fields

Following are the other numerical fields available in NocoDB, with some custom add-on features.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/numerical/decimal/index.html b/packages/noco-docs/dist/fields/field-types/numerical/decimal/index.html new file mode 100644 index 0000000000..fe2c009411 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/numerical/decimal/index.html @@ -0,0 +1,16 @@ + + + + + +Decimal | NocoDB + + + + +
+
Version: Latest

Decimal

Decimal field type is used to store decimal values. Use cases include storing salary, price, etc. NocoDB supports precision of upto 8 digits.

Create a decimal field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Decimal from the dropdown.
  4. Configure Precision- NocoDB supports upto 8 digits of precision.
  5. Set default value for the field (Optional).
  6. Click on Save Field button.

image

info
  • Default decimal precision is 1 digit

Similar numerical fields

Following are the other numerical fields available in NocoDB, with some custom add-on features.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/numerical/number/index.html b/packages/noco-docs/dist/fields/field-types/numerical/number/index.html new file mode 100644 index 0000000000..51349b13b9 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/numerical/number/index.html @@ -0,0 +1,16 @@ + + + + + +Number | NocoDB + + + + +
+
Version: Latest

Number

Number field type is used to store numerical values. Use cases include storing age, salary, price, quantity, etc.

Create a number field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Number from the dropdown.
  4. Set default value for the field (Optional).
  5. Click on Save Field button.

image

info
  • This field type can hold both positive and negative numbers.
  • Supported range (JavaScript): -9007199254740991 to 9007199254740991

Similar numerical fields

Following are the other numerical fields available in NocoDB, with some custom add-on features.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/numerical/percent/index.html b/packages/noco-docs/dist/fields/field-types/numerical/percent/index.html new file mode 100644 index 0000000000..7e835782b2 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/numerical/percent/index.html @@ -0,0 +1,16 @@ + + + + + +Percent | NocoDB + + + + +
+
Version: Latest

Percent

Percent field type is used to store percentage values. Use cases include storing discount, tax, etc.

Create a percent field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Percent from the dropdown.
  4. Set default value for the field (Optional).
  5. Click on Save Field button.

image

Similar numerical fields

Following are the other numerical fields available in NocoDB, with some custom add-on features.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/select-based/checkbox/index.html b/packages/noco-docs/dist/fields/field-types/select-based/checkbox/index.html new file mode 100644 index 0000000000..e9fc1f94be --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/select-based/checkbox/index.html @@ -0,0 +1,18 @@ + + + + + +Checkbox | NocoDB + + + + +
+
Version: Latest

Checkbox

The checkbox field type is used to store boolean values. It can be used to store a simple yes/no value, or true/false, or any other boolean value.

Create a checkbox field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Checkbox from the dropdown.
  4. Select icon for the field; defaults to check icon (Optional).
  5. Select color for the field; defaults to grey (Optional).
  6. Set default value for the field (Optional).
  7. Click on Save Field button.

image

Cell display

Cell displays the icon in the color selected for the field. A true value will be represented by a checked icon or a filled icon
+image

Supported icons

NocoDB supports the following icons for the checkbox field type.
+image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/select-based/multi-select/index.html b/packages/noco-docs/dist/fields/field-types/select-based/multi-select/index.html new file mode 100644 index 0000000000..bb34f5bbe2 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/select-based/multi-select/index.html @@ -0,0 +1,17 @@ + + + + + +Multi Select | NocoDB + + + + +
+
Version: Latest

Multi Select

Multi Select fields allow you to select multiple options from a list of options. The options can be defined in the field configuration.

Create a multi select field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as MultiSelect from the dropdown.
  4. Click on Add option button to add options.
  5. Set default value for the field. The options are populated in the dropdown. Since its multi select, you can select multiple options as default value (Optional).
  6. Click on Save Field button.

image

note

Use of , is not allowed for option values.

Configure color for options

You can re-configure background color for each option. This is useful when you want to highlight certain options. For example, you can configure High option to have red background color. +To configure, click on the color icon next to the option. Select the color from the color picker and click on Save Field button.

image

Re-order options

You can re-order options by dragging and dropping the options. To re-order, click on the drag icon next to the option and drag it to the desired position. Click on Save Field button to save the order.

image

info

The order defined for the options will be used in cells dropdown as well.

Edit options

You can rename options by clicking on the associated option text box. Click on Save Field button to save the changes.

Delete options

You can delete options by clicking on the x icon next to the option. You can undo the delete by clicking on the undo icon next to the option. Click on Save Field button to save the changes.

info
  • On removing an option, the option value will be removed from all the cells.
  • If the option value is set as default value for the field, then the default value will be removed.

image

Similar select based fields

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/select-based/rating/index.html b/packages/noco-docs/dist/fields/field-types/select-based/rating/index.html new file mode 100644 index 0000000000..0455402949 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/select-based/rating/index.html @@ -0,0 +1,18 @@ + + + + + +Rating | NocoDB + + + + +
+
Version: Latest

Rating

The

Create a checkbox field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Rating from the dropdown.
  4. Select icon for the field; defaults to star icon (Optional).
  5. Configure max count for the field; defaults to 5 (Optional).
  6. Select color for the field; defaults to grey (Optional).
  7. Set default value for the field (Optional).
  8. Click on Save Field button.

image

Cell display

Cell displays the ratings in the color & icon selected for the field.
+image

Setting value for the field

  • Click on the nth rating icon to set the rating value for the field as n.
  • Key in the rating value in the cell to set the rating value for the field.
  • Paste the rating value in the cell to set the rating value for the field.

Unsetting value for the field

  • Click on the nth rating icon again to set the rating value for the field as 0.
  • Key in 0 in the cell to set the rating value for the field as 0.
  • Key in Delete to set the rating value for the field as 0.

Supported icons

NocoDB supports the following icons for the rating field type.
+image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/select-based/single-select/index.html b/packages/noco-docs/dist/fields/field-types/select-based/single-select/index.html new file mode 100644 index 0000000000..047b0e5077 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/select-based/single-select/index.html @@ -0,0 +1,18 @@ + + + + + +Single Select | NocoDB + + + + +
+
Version: Latest

Single Select

Single select fields allow you to select a single option from a list of options. The options can be defined in the field configuration.

Create a single select field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as SingleSelect from the dropdown.
  4. Click on Add option button to add options.
  5. Set default value for the field. The options are populated in the dropdown (Optional).
  6. Click on Save Field button.

image

Edit options

Rename options

You can rename options by clicking on the associated option text box. Click on Save Field button to save the changes.

Configure color for options

You can re-configure background color for each option. This is useful when you want to highlight certain options. For example, you can configure High option to have red background color. +To configure, click on the color icon next to the option. Select the color from the color picker and click on Save Field button.

image

Re-order options

You can re-order options by dragging and dropping the options. To re-order, click on the drag icon next to the option and drag it to the desired position. Click on Save Field button to save the order.

image

info

The order defined for the options will be used in cells dropdown as well.

Edit options

You can rename options by clicking on the associated option text box. Click on Save Field button to save the changes.

Delete options

You can delete options by clicking on the x icon next to the option. You can undo the delete by clicking on the undo icon next to the option. Click on Save Field button to save the changes.

info
  • On removing an option, the option value will be removed from all the cells.
  • If the option value is set as default value for the field, then the default value will be removed. +:::

image

Similar select based fields

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/text-based/email/index.html b/packages/noco-docs/dist/fields/field-types/text-based/email/index.html new file mode 100644 index 0000000000..ad1a811181 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/text-based/email/index.html @@ -0,0 +1,16 @@ + + + + + +Email | NocoDB + + + + +
+
Version: Latest

Email

Email field is text based field custom-built for storing E-mail IDs. It is a special type of Single line text field with

  • Optional validation for Email ID
  • Cell display as clickable link

Create an Email field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Email from the dropdown.
  4. Enable validation by toggling the Validate Email checkbox (Optional).
  5. Set default value for the field (Optional).
  6. Click on Save Field button.

image

note
  • Specify default value without quotes.
  • Validation only ensures that the value entered is a valid email ID. It does not check if the email ID exists.

Similar text based fields

Following are the other text based fields available in NocoDB, custom-built for specific use cases.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/text-based/long-text/index.html b/packages/noco-docs/dist/fields/field-types/text-based/long-text/index.html new file mode 100644 index 0000000000..8f6d62edd1 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/text-based/long-text/index.html @@ -0,0 +1,17 @@ + + + + + +Long text | NocoDB + + + + +
+
Version: Latest

Long text

Long Text field is text based field that allows text in multiple lines. It is useful for storing lengthy text like description, notes, etc.

Create a Long Text field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Long text from the dropdown.
  4. Set default value for the field (Optional).
  5. Click on Save Field button.

image

note
  • Specify default value without quotes.
  • Use Enter key to add new line.

Cell display

Long Text field is displayed as a single line text field in the table view. Click on the expand icon in the cell to view the full text.

image +image

Similar text based fields

Following are the other text based fields available in NocoDB, custom-built for specific use cases.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/text-based/phonenumber/index.html b/packages/noco-docs/dist/fields/field-types/text-based/phonenumber/index.html new file mode 100644 index 0000000000..4a2d82d094 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/text-based/phonenumber/index.html @@ -0,0 +1,16 @@ + + + + + +Phone Number | NocoDB + + + + +
+
Version: Latest

Phone Number

Phone number field is text based field that allows you to store phone numbers. It also allows you to validate the phone number.

Create a Phone number field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Phonenumber from the dropdown.
  4. Enable validation by toggling the Validate Phonenumber checkbox (Optional).
  5. Set default value for the field (Optional).
  6. Click on Save Field button.

image

note
  • Specify default value without quotes.
  • Validation only ensures that the value entered is a valid phone number. It does not check if the phone number exists.

Similar text based fields

Following are the other text based fields available in NocoDB, custom-built for specific use cases.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/text-based/single-line-text/index.html b/packages/noco-docs/dist/fields/field-types/text-based/single-line-text/index.html new file mode 100644 index 0000000000..fd8add0e96 --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/text-based/single-line-text/index.html @@ -0,0 +1,16 @@ + + + + + +Single line text | NocoDB + + + + +
+
Version: Latest

Single line text

Single line text field is a simple text based field. It can hold any text value. It is generally used for storing short text values like name, email, phone number, etc. For storing text values with multiple lines, use Long text field.

Create a single line text field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as Single line text from the dropdown.
  4. Set default value for the field (Optional).
  5. Click on Save Field button.

image

note

Specify default value without quotes.

Similar text based fields

Following are the other text based fields available in NocoDB, custom-built for specific use cases.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/field-types/text-based/url/index.html b/packages/noco-docs/dist/fields/field-types/text-based/url/index.html new file mode 100644 index 0000000000..0a3cd7deaa --- /dev/null +++ b/packages/noco-docs/dist/fields/field-types/text-based/url/index.html @@ -0,0 +1,16 @@ + + + + + +URL | NocoDB + + + + +
+
Version: Latest

URL

URL field is text based field custom-built for storing URLs. It is a special type of Single line text field with

  • Optional validation for URL
  • Cell display as clickable link

Create an URL field

  1. Click on + icon to the right of Fields header
  2. On the dropdown modal, enter the field name (Optional).
  3. Select the field type as URL from the dropdown.
  4. Enable validation by toggling the Validate URL checkbox (Optional).
  5. Set default value for the field (Optional).
  6. Click on Save Field button.

image

note
  • Specify default value without quotes.
  • Validation only ensures that the value entered is a valid URL. It does not check if the URL exists.

Similar text based fields

Following are the other text based fields available in NocoDB, custom-built for specific use cases.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/fields-overview/index.html b/packages/noco-docs/dist/fields/fields-overview/index.html new file mode 100644 index 0000000000..b85729d22c --- /dev/null +++ b/packages/noco-docs/dist/fields/fields-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Fields overview | NocoDB + + + + + + + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/multi-fields-editor/index.html b/packages/noco-docs/dist/fields/multi-fields-editor/index.html new file mode 100644 index 0000000000..0967c5e1ab --- /dev/null +++ b/packages/noco-docs/dist/fields/multi-fields-editor/index.html @@ -0,0 +1,16 @@ + + + + + +Multi-field editor | NocoDB + + + + +
+
Version: Latest

Multi-field editor

NocoDB offers a handy tool for easily managing the fields within a table. With this tool, you can add, modify, rename, arrange, or hide fields efficiently. It's particularly useful when creating a new table structure or making changes to an existing one.

Accessing the Multi-Field Editor

  1. Navigate to the table you wish to edit
  2. Click on Details in the navbar
  3. Select Fields tab

Access

Adding fields

On the Multi-field editor page,

  1. Click on Add Field button to add a new field.
  2. Enter the field name and select the field type; configure default value (optional).
  3. Field will be added to the end of the list. You can reorder the fields as needed. You can add / update multiple fields in one go & save all at once.
  4. Click Save changes button to save the changes.

Add field

tip
  • You can add / update/ delete multiple fields & save changes in one go.
  • Use Restore to discard edits to a particular field. Use Reset to discard all active changes on multi-field editor.

Editing fields

On the Multi-field editor page,

  1. Click on the field you wish to edit.
  2. Make the necessary changes in the Edit Field modal. You can update the field name, type, default value, and other attributes.
  3. Updates to the field are recorded in the fields list view. You can add / update multiple fields in one go & save all at once.
  4. Click Save changes button to save the changes.

Edit field

tip
  • You can add / update/ delete multiple fields & save changes in one go.
  • Use Restore to discard edits to a particular field. Use Reset to discard all active changes on multi-field editor.

Deleting fields

On the Multi-field editor page,

  1. Hover over the field you wish to delete, select ... icon to open context menu
  2. Click on Delete option to delete the field.
  3. Deletions in the table are recorded in the fields list view. You can delete multiple fields in one go & save all at once.
  4. Click Save changes button to save the changes.

After all the changes are made, click Save changes button to save the changes.

Delete field

Delete field

tip
  • You can add / update/ delete multiple fields & save changes in one go.
  • Use Restore to discard edits to a particular field. Use Reset to discard all active changes on multi-field editor.

Reordering fields

On the Multi-field editor page, use drag-drop handle to drag and drop the fields to reorder them.

note

The changes will only be saved when you click Save changes button.

Reorder fields

Show / Hide fields

On the Multi-field editor page, use the toggle button next to the fields to show or hide them.

note

The changes will only be saved when you click Save changes button.

Show / Hide fields

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/fields/primary-key/index.html b/packages/noco-docs/dist/fields/primary-key/index.html new file mode 100644 index 0000000000..b57f4c3357 --- /dev/null +++ b/packages/noco-docs/dist/fields/primary-key/index.html @@ -0,0 +1,16 @@ + + + + + +Primary key | NocoDB + + + + +
+
Version: Latest

Primary Key

A primary key is a special database table field designated to uniquely identify each table record.

Use of Primary Key

As it uniquely identifies an individual record of a table, it is used internally by NocoDB for all operations associated with a record

Primary Key in NocoDB

Primary Key that gets defined / used in NocoDB depends on how underlying table was created. Summary is captured below

  1. From UI, Create new table / Import from Excel / Import from CSV
    1. An ID [datatype: Integer] system field created by default during table creation is used as primary key
    2. Additional system fields created-at, updated-at are inserted by default & can be omitted optionally; these fields can be deleted after table creation
  2. Connect to existing external database
    1. Existing primary key field defined for a table is retained as is; NocoDB doesn't insert a new ID field
    2. Additional system fields created-at, updated-at are not inserted by default
  3. Import from Airtable
    1. Airtable record ID is marked as primary key for imported records, and is mapped to field ncRecordId [datatype: varchar]
    2. If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB
    3. Computed hash value for the entire record is stored in system field ncRecordHash
    4. Additional system fields created-at, updated-at are not inserted by default
  4. Create new table using SDK / API
    1. No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute pk: true)
info

What if Primary Key was missing?

It is possible to have a table without any primary key.

  • External database table can be created without primary key configuration.

  • New table can be created using SDK / API without primary key

    In such scenario's, new records can be created in NocoDB for this table, but records can't be updated or deleted as there is no way for NocoDB to uniquely identify these records

info

Can I change the Primary Key to another field within tables?

  • You can't update Primary Key from NocoDB UI. You can reconfigure it at database level directly & trigger meta sync explicitly.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/keyboard-shortcuts/index.html b/packages/noco-docs/dist/getting-started/keyboard-shortcuts/index.html new file mode 100644 index 0000000000..0c40658417 --- /dev/null +++ b/packages/noco-docs/dist/getting-started/keyboard-shortcuts/index.html @@ -0,0 +1,16 @@ + + + + + +Keyboard shortcuts | NocoDB + + + + +
+
Version: Latest

Keyboard shortcuts

Quick Actions

note

This feature is available only in NocoDB Cloud hosted version.

+ K (or Ctrl + K on Windows) is a keyboard shortcut to quickly navigate between different workspace, table, view, or a menu items. For example, if you want to quickly navigate to the "API Tokens" page, you can open Quick Actions menu using ⌘+K, type "Token" in the search box and press enter.

This shortcut is often referred to as "Command-K". It's a great way to save time when you're navigating around NocoDB.

Command-K menu can also be accessed via the "Quick Actions" button in the top left corner of the screen.

Quick Actions

To navigate within ⌘+K menu,

  • Use to navigate between listed items
  • Use Enter to select an item
  • Use Backspace to move to parent menu
  • Use Esc to close the menu

Recent Views

note

This feature is available only in NocoDB Cloud hosted version.

Access recently visited views quickly using + L (or Ctrl + L on Windows). Search results will be displayed in a modal window; click on the result to open the view.

Recent Views

To navigate within ⌘+K menu,

  • Use to navigate between listed items
  • Use Enter to select an item
  • Use Backspace to move to parent menu
  • Use Esc to close the menu

Search in Docs

note

This feature is available only in NocoDB Cloud hosted version.

Quickly search through docs from within NocoDB UI using + J (or Ctrl + J on Windows). Search results will be displayed in a modal window; click on the result to open the page in a new tab.

To navigate within ⌘+K menu,

  • Use to navigate between listed items
  • Use Enter to select an item
  • Use Backspace to move to parent menu
  • Use Esc to close the menu

Search in Docs

General shortcuts

KeyBehaviour
alt + tOpens new table modal
alt + cOpens new field modal
alt + fToggles fullscreen mode
alt + iOpens share button modal
+ kOpens Quick Actions modal

Grid view shortcuts

KeyBehaviour
General cell navigation
DeleteClear cell
SpaceExpand current record
TabMove to next cell horizontally; if on last cell, move to beginning of next record
EscExit cell EDIT mode
EnterSwitch cell in focus to EDIT mode; opens modal/picker if cell is associated with one
+ Jump to first record in this field (in same page)
+ Jump to last record in this field (in same page)
+ Jump to first field in this record
+ Jump to last field in this record
+ cCopy cell contents
+ vPaste copied contents
alt + rInserts new record in grid view

Field type specific shortcuts

DatatypeKeyBehaviour
Text & Numerical cells Move cursor to the left / right
Move cursor to the beginning / end
Single Select Move between options
EnterSelect option
Multi Select Move between options
EnterSelect / deselect option
Link Move between options
EnterLink current selection
CheckboxEnterToggle
Rating<0 ~ Max>Enter number to toggle rating

Expanded form shortcuts

KeyBehaviour
+ EnterSave current expanded form item
alt + Switch to next record
alt + Switch to previous record
alt + SSave current expanded form record
alt + NCreate a new record
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/quick-start/index.html b/packages/noco-docs/dist/getting-started/quick-start/index.html new file mode 100644 index 0000000000..ba70d280be --- /dev/null +++ b/packages/noco-docs/dist/getting-started/quick-start/index.html @@ -0,0 +1,16 @@ + + + + + +Quick start | NocoDB + + + + +
+
Version: Latest

Quick start

NocoDB offers you the flexibility of two distinct variants: self-hosted and SaaS (cloud-hosted). In this section, we'll walk you through the initial steps to embark on your NocoDB journey, whether you choose to set it up on your own infrastructure or opt for the convenience of our cloud-hosted service. Let's dive in and unlock the potential of NocoDB for your data management needs.

tip

For this introductory guide, we suggest utilizing the hosted (SaaS) option. New users can take advantage of a complimentary trial period to explore the platform's features.

Self Hosted

When you opt for self-hosting, you gain the advantage of running an application on a server that you have direct control over. This grants you the flexibility to choose whether to host the database on your premises or within a server leased from a data center. In this self-administered arrangement, typically found on-premises, you assume full responsibility for the management and upkeep of your server. This level of control ensures that you have complete authority over all aspects of your data and services, eliminating any reliance on third-party service providers. This option is ideal for organizations that require a high degree of control over their data and services, but it does necessitate a higher level of technical expertise.

Setting up NocoDB on your own server is a straightforward process & the articles below will guide you through the steps to get started.

SaaS (Cloud Hosted)

Sign up for a NocoDB account

To get started with NocoDB's cloud-hosted service, follow these steps to sign up for an account:

  1. Visit the NocoDB website.
  2. Click on the "Start For Free" button located in the top right corner.
  3. Sign Up using Google account. Alternatively, you can also sign up using your email address.
  4. Check your email for a verification link and follow the instructions to verify your account.

Once you've successfully signed up, you will land on the NocoDB dashboard with a default workspace created for you.

Create another workspace

After signing up and logging in to your NocoDB account, a default workspace is automatically created for you. You can use this workspace or create a new one

Your new workspace is now ready, and you can start building your base within it.

Build a Base

Building a base in NocoDB is where you define the structure of your database, create tables to store your data, add fields to those tables, and establish relationships between tables using Links. This relational approach helps you organize and manage your data effectively, making it easier to work with complex datasets and build powerful applications. Add a new Base. Alternatively, you can also import existing base from Airtable as a NocoDB project in minutes.

Create Tables

Tables are where you store your data like a spreadsheet grid, with data arranged in rows & columns. Once the base is created, you can start adding new tables to it. You can also import existing structure data from a CSV, Excel, or JSON file to populate your tables.

Add Fields

Within each table, define the fields that will hold your data. Fields are columnar data containers that hold a specific type of data. Fields can represent various types of information, such as text, numbers, dates, and more. You can find complete list of supported field types here.

Use multi-fields editor to manage fields in bulk quickly - add fields, edit them, reorder, change visibility, reconfigure - all from one single window. Read more.

One of NocoDB's powerful features is the ability to establish relationships between tables using Links. Links enable you to connect related data across tables. For example, you can link "Tasks" to a specific "Project" by creating a Link field in the "Projects" table that points to the "Tasks" table.

Add Records

Once you have created tables and defined the necessary fields, it's time to start adding records to your base tables. Records are individual entries or rows within your tables, and they contain the actual data you want to store and manage. You can add records manually or upload existing data sets from CSV files.

Create views

Views are customized ways of displaying your data. You can create multiple views for each table in your base, and each view can have its own set of fields, filters, and layouts. NocoDB offers a variety of view types for custom display, including Grid, Kanban, and Gallery. If you are collecting data from a form, you can also create a Form view to display the data in a form format.

Connect your data sources

Not just creating base & tables from the scratch, NocoDB also allows you to get started quickly by connecting to your existing data sources & bring the comfort of spreadsheet UI to your data source.

Collaborate with your team

NocoDB makes it easy to collaborate with your team members on your workspaces and bases. You can invite team members to your workspace and share your bases with them. You can also assign roles and permissions to your team members to control their access to your bases.

Want to share information publicly? You can create a public link to your base and share it with anyone. You can also embed your base on your website or blog.

That's it! You're now ready to harness the power of NocoDB for your data management needs.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/self-hosted/environment-variables/index.html b/packages/noco-docs/dist/getting-started/self-hosted/environment-variables/index.html new file mode 100644 index 0000000000..bd84901591 --- /dev/null +++ b/packages/noco-docs/dist/getting-started/self-hosted/environment-variables/index.html @@ -0,0 +1,16 @@ + + + + + +Environment variables | NocoDB + + + + +
+
Version: Latest

Environment variables

For production use-cases, it is recommended to configure

  • NC_DB,
  • NC_AUTH_JWT_SECRET,
  • NC_PUBLIC_URL,
  • NC_REDIS_URL
VariableCommentsIf absent
NC_DBSee our example database URLs here.A local SQLite will be created in root folder if NC_DB is not provided
NC_DB_JSONCan be used instead of NC_DB and value should be valid knex connection JSON
NC_DB_JSON_FILECan be used instead of NC_DB and value should be a valid path to knex connection JSON
DATABASE_URLCan be used instead of NC_DB and value should be in JDBC URL format
DATABASE_URL_FILECan be used instead of DATABASE_URL and value should be a valid path to file containing JDBC URL format.
NC_AUTH_JWT_SECRETJWT secret used for auth and storing other secretsA random secret will be generated
PORTFor setting app running port8080
DB_QUERY_LIMIT_DEFAULTPagination limit25
DB_QUERY_LIMIT_MAXMaximum allowed pagination limit1000
DB_QUERY_LIMIT_MINMinimum allowed pagination limit1
NC_TOOL_DIRApp directory to keep metadata and app related filesDefaults to current working directory. In docker maps to /usr/app/data/ for mounting volume.
NC_PUBLIC_URLUsed for sending Email invitationsBest guess from http request params
NC_JWT_EXPIRES_INJWT token expiry time10h
NC_CONNECT_TO_EXTERNAL_DB_DISABLEDDisable Project creation with external database
NC_INVITE_ONLY_SIGNUPRemoved since version 0.99.0 and now it's recommended to use super admin settings menu. Allow users to signup only via invite URL, value should be any non-empty string.
NUXT_PUBLIC_NC_BACKEND_URLCustom Backend URLhttp://localhost:8080 will be used
NC_REQUEST_BODY_SIZERequest body size limit1048576
NC_EXPORT_MAX_TIMEOUTAfter NC_EXPORT_MAX_TIMEOUT, CSV gets downloaded in batchesDefault value 5000(in millisecond) will be used
NC_DISABLE_TELEDisable telemetry
NC_DASHBOARD_URLCustom dashboard URL path/dashboard
NC_GOOGLE_CLIENT_IDGoogle client ID to enable Google authentication
NC_GOOGLE_CLIENT_SECRETGoogle client secret to enable Google authentication
NC_MIGRATIONS_DISABLEDDisable NocoDB migration
NC_MINIf set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable
NC_SENTRY_DSNFor Sentry monitoring
NC_REDIS_URLCustom Redis URL. Example: redis://:authpassword@127.0.0.1:6380/4Meta data will be stored in memory
NC_DISABLE_ERR_REPORTDisable error reporting
NC_DISABLE_CACHETo be used only while debugging. On setting this to true - meta data be fetched from db instead of redis/cache.false
AWS_ACCESS_KEY_IDFor Litestream - S3 access key idIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_SECRET_ACCESS_KEYFor Litestream - S3 secret access keyIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_BUCKETFor Litestream - S3 bucketIf Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
AWS_BUCKET_PATHFor Litestream - S3 bucket path (like folder within S3 bucket)If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3
NC_SMTP_FROMFor SMTP plugin - Email sender address
NC_SMTP_HOSTFor SMTP plugin - SMTP host value
NC_SMTP_PORTFor SMTP plugin - SMTP port value
NC_SMTP_USERNAMEFor SMTP plugin (Optional) - SMTP username value for authentication
NC_SMTP_PASSWORDFor SMTP plugin (Optional) - SMTP password value for authentication
NC_SMTP_SECUREFor SMTP plugin (Optional) - To enable secure set value as true any other value treated as false
NC_SMTP_IGNORE_TLSFor SMTP plugin (Optional) - To ignore tls set value as true any other value treated as false. For more info visit https://nodemailer.com/smtp/
NC_S3_BUCKET_NAMEFor S3 storage plugin - AWS S3 bucket name
NC_S3_REGIONFor S3 storage plugin - AWS S3 region
NC_S3_ACCESS_KEYFor S3 storage plugin - AWS access key credential for accessing resource
NC_S3_ACCESS_SECRETFor S3 storage plugin - AWS access secret credential for accessing resource
NC_ADMIN_EMAILFor updating/creating super admin with provided email and password
NC_ATTACHMENT_FIELD_SIZEFor setting the attachment field size(in Bytes)Defaults to 20MB
NC_ADMIN_PASSWORDFor updating/creating super admin with provided email and password. Your password should have at least 8 letters with one uppercase, one number and one special letter(Allowed special chars $&+,:;=?@#|'.^*()%!_-" )
NODE_OPTIONSFor passing Node.js options to instance
NC_MINIMAL_DBSCreate a new SQLite file for each project. All the db files are stored in nc_minimal_dbs folder in current working directory. (This option restricts project creation on external sources)
NC_DISABLE_AUDITDisable Audit Logfalse
NC_AUTOMATION_LOG_LEVELPossible Values: OFF, ERROR, ALL. See Webhooks for details.OFF
NC_SECURE_ATTACHMENTSAllow accessing attachments only through pre-signed URLs. To enable secure set value as true any other value treated as false. (⚠ this will make existing links inaccessible ⚠)false
NC_ATTACHMENT_EXPIRE_SECONDSHow many seconds before expiring pre-signed attachment URLs. (Attachments will expire in at least set seconds and at most 10 minutes after set time)7200 (2 hours)
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/self-hosted/installation/index.html b/packages/noco-docs/dist/getting-started/self-hosted/installation/index.html new file mode 100644 index 0000000000..e27b7a9bbf --- /dev/null +++ b/packages/noco-docs/dist/getting-started/self-hosted/installation/index.html @@ -0,0 +1,20 @@ + + + + + +Installation | NocoDB + + + + +
+
Version: Latest

Installation

Simple installation - takes about three minutes!

Prerequisites

Quick try

Docker

If you are a Docker user, you may try this way!

docker run -d --name nocodb \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
nocodb/nocodb:latest
tip

To persist data in docker you can mount volume at /usr/app/data/ since 0.10.6. In older version mount at /usr/src/app. Otherwise your data will be lost after recreating the container.

tip

If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for MySQL Docker.

Docker Compose

We provide different docker-compose.yml files under this directory. Here are some examples.

git clone https://github.com/nocodb/nocodb
cd nocodb/docker-compose/mysql
docker-compose up -d
tip

To persist data in docker you can mount volume at /usr/app/data/ since 0.10.6. In older version mount at /usr/src/app. +If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for MySQL Docker Compose.

NPX

You can run below command if you need an interactive configuration.

npx create-nocodb-app

Preview:

image

Homebrew

brew tap nocodb/nocodb
brew install nocodb
nocodb

Executables

You can download executables directly and run without any extra dependency. Use the right command based on your platform.

curl http://get.nocodb.com/macos-x64 -o nocodb -L \
&& chmod +x nocodb \
&& ./nocodb

Node Application

We provide a simple NodeJS Application for getting started.

git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start

AWS ECS (Fargate)

Click to Expand

Create ECS Cluster

aws ecs create-cluster \
--cluster-name <YOUR_ECS_CLUSTER>

Create Log group

aws logs create-log-group \
--log-group-name /ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME>

Create ECS Task Definiton

Every time you create it, it will add a new version. If it is not existing, the version will be 1.

aws ecs register-task-definition \
--cli-input-json "file://./<YOUR_TASK_DEF_NAME>.json"
tip

This json file defines the container specification. You can define secrets such as NC_DB and environment variables here.

Here's the sample Task Definition

{
"family": "nocodb-sample-task-def",
"networkMode": "awsvpc",
"containerDefinitions": [{
"name": "<YOUR_CONTAINER_NAME>",
"image": "nocodb/nocodb:latest",
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME>",
"awslogs-region": "<YOUR_AWS_REGION>",
"awslogs-stream-prefix": "ecs"
}
},
"secrets": [{
"name": "<YOUR_SECRETS_NAME>",
"valueFrom": "<YOUR_SECRET_ARN>"
}],
"environment": [{
"name": "<YOUR_ENV_VARIABLE_NAME>",
"value": "<YOUR_ENV_VARIABLE_VALUE>"
}],
"portMappings": [{
"containerPort": 8080,
"hostPort": 8080,
"protocol": "tcp"
}]
}],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "256",
"memory": "512",
"executionRoleArn": "<YOUR_ECS_EXECUTION_ROLE_ARN>",
"taskRoleArn": "<YOUR_ECS_TASK_ROLE_ARN>"
}

Create ECS Service

aws ecs create-service \
--cluster <YOUR_ECS_CLUSTER> \
--service-name <YOUR_SERVICE_NAME> \
--task-definition <YOUR_TASK_DEF>:<YOUR_TASK_DEF_VERSION> \
--desired-count <DESIRED_COUNT> \
--launch-type "FARGATE" \
--platform-version <VERSION> \
--health-check-grace-period-seconds <GRACE_PERIOD_IN_SECOND> \
--network-configuration "awsvpcConfiguration={subnets=["<YOUR_SUBSETS>"], securityGroups=["<YOUR_SECURITY_GROUPS>"], assignPublicIp=ENABLED}" \
--load-balancer targetGroupArn=<TARGET_GROUP_ARN>,containerName=<CONTAINER_NAME>,containerPort=<YOUR_CONTAINER_PORT>
tip

If your service fails to start, you may check the logs in ECS console or in Cloudwatch. Generally it fails due to the connection between ECS container and NC_DB. Make sure the security groups have the correct inbound and outbound rules.

GCP (Cloud Run)

Click to Expand

Pull NocoDB Image on Cloud Shell

Since Cloud Run only supports images from Google Container Registry (GCR) or Artifact Registry, we need to pull NocoDB image, tag it and push it in GCP using Cloud Shell. Here are some sample commands which you can execute in Cloud Shell.

# pull latest NocoDB image
docker pull nocodb/nocodb:latest

# tag the image
docker tag nocodb/nocodb:latest gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest

# push the image to GCR
docker push gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest

Deploy NocoDB on Cloud Run

gcloud run deploy --image=gcr.io/<MY_PROJECT_ID>/nocodb/nocodb:latest \
--region=us-central1 \
--allow-unauthenticated \
--platform=managed

DigitalOcean (App)

Click to Expand

Create Apps

On Home page, Click on Create icon & Select Apps (Deploy your code).

Screenshot 2022-02-19 at 12 17 43 PM

Choose Source: Docker Hub

Screenshot 2022-02-19 at 12 22 01 PM

Choose Source: Repository

Configure Source Repository as nocodb/nocodb. Optionally you can pick release tag if you are interested in specific NocoDB version.

Screenshot 2022-02-19 at 12 23 11 PM

[Optional] Additional Configurations

Screenshot 2022-02-19 at 12 24 44 PM

Name your web service

Pick a name for your NocoDB application. This name will become part of URL subsequently +Pick nearest Region for cloud hosting +Screenshot 2022-02-19 at 12 28 11 PM

Finalize and Launch

Cloudron

Click to Expand

Log into Cloudron and select App Store

image

Search NocoDB

image

Click Install

image

Configure NocoDB

image

Go to My App and Launch NocoDB

image

CapRover

Click to Expand

Login and Click One-Click Apps / Databases

image

Search NocoDB

image

Configure NocoDB and Deploy

image

Railway

Click to Expand

Go to Templates, Search NocoDB and click Deploy

image

Configure NocoDB and Deploy

image

FreeBSD / FreeNAS / TrueNAS Jail

See here provided by C. R. Zamana.

Sample Demos

Code Sandbox

Docker deploying with one command

Using NPX

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/self-hosted/upgrading/index.html b/packages/noco-docs/dist/getting-started/self-hosted/upgrading/index.html new file mode 100644 index 0000000000..0fb9433b2f --- /dev/null +++ b/packages/noco-docs/dist/getting-started/self-hosted/upgrading/index.html @@ -0,0 +1,16 @@ + + + + + +Upgrading | NocoDB + + + + +
+
Version: Latest

Upgrading

By default, if NC_DB is not specified upon installation, then SQLite will be used to store metadata. We suggest users to separate the metadata and user data in different databases as pictured in our architecture.

Docker

Find, Stop & Delete NocoDB Docker Container

# find NocoDB container ID
docker ps
# stop NocoDB container
docker stop <YOUR_CONTAINER_ID>
# delete NocoDB container
docker rm <YOUR_CONTAINER_ID>

Note: Deleting your docker container without setting NC_DB or mounting to a persistent volume for a default SQLite database will result in losing your data. See examples below.

Find & Remove NocoDB Docker Image

# find NocoDB image
docker images
# delete NocoDB image
docker rmi <YOUR_IMAGE_ID>

Pull the latest NocoDB image with same environment variables

docker run -d -p 8080:8080 \
-e NC_DB="<YOUR_NC_DB_URL>" \
-e NC_AUTH_JWT_SECRET="<YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN>" \
nocodb/nocodb:latest

Updating NocoDB docker container is similar to updating any other docker containers.

Example: Docker Upgrade

# Previous docker run
#
terminal % docker run -d --name myNocoDB \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
-e NC_DB="pg://host.docker.internal:5432?u=postgres&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:0.111.0
Unable to find image 'nocodb/nocodb:0.111.0' locally
0.111.0: Pulling from nocodb/nocodb
ad3fa0ea069c: Pull complete
e43b9156e769: Pull complete
c1bee0da1504: Pull complete
adf78ab024d9: Pull complete
cd8000d2c16a: Pull complete
Digest: sha256:93b6e1ba2c0b90a26b205f9c7d44053aa6d8fa037eff9eb4155ca017f6c9bed4
Status: Downloaded newer image for nocodb/nocodb:0.111.0
afdc8edd1005c93e1df8f90d02e46430ea7b5c5610a2bf9ba105238d6c4d927b


# Find, stop and delete NocoDB docker container
#
terminal % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
afdc8edd1005 nocodb/nocodb:0.111.0 "/usr/bin/dumb-init …" 18 seconds ago Up 18 seconds 0.0.0.0:8080->8080/tcp myNocoDB
0202041b3607 postgres:14.7 "docker-entrypoint.s…" 2 days ago Up 8 hours (healthy) 0.0.0.0:5432->5432/tcp scripts_pg147_1

terminal % docker stop afdc8edd1005
afdc8edd1005

terminal % docker rm afdc8edd1005
afdc8edd1005


# Find and remove NocoDB docker image
#
terminal % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nocodb/nocodb 0.111.0 34609411e87c 5 weeks ago 132MB
mysql 8.0 6a0560a40914 7 weeks ago 599MB
postgres 14.7 2075a95c7b3b 4 months ago 358MB

terminal % docker rmi 34609411e87c
Untagged: nocodb/nocodb:0.111.0
Untagged: nocodb/nocodb@sha256:93b6e1ba2c0b90a26b205f9c7d44053aa6d8fa037eff9eb4155ca017f6c9bed4
Deleted: sha256:3bfxxxx38e682742cbxxxx535b3503af45e931fb9bd15f46eca7d33cf4c54d72
Deleted: sha256:952152b5da42ae057c6688a04xxxx72e1a2f91825956f5c7e35f91d5b285d4d8
Deleted: sha256:3155197577xxxx673675ed1bce761714a24d7803f70a905740f7d4c248cxxxxx


# Pull & run the latest NocoDB image with same environment variables as before
#
terminal % docker run -d --name myNocoDB \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
-e NC_DB="pg://host.docker.internal:5432?u=postgres&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
Unable to find image 'nocodb/nocodb:latest' locally
latest: Pulling from nocodb/nocodb
ad3fa0ea069c: Pull complete
e43b9156e769: Pull complete
c1bee0da1504: Pull complete
adf78ab024d9: Pull complete
28ce4fc94e48: Pull complete
Digest: sha256:5c6df5ff0eb1278e1dbfe684af630a743ca73dfec8c30cab3bae9c1d0d640287
Status: Downloaded newer image for nocodb/nocodb:latest
ae793a04b75f2f3ee78abbaef09891396a884ec83320151a266326195649a058


Node

Updating docker container is similar to updating a npm package.

From your root folder

Uninstall NocoDB package

npm uninstall nocodb

Install NocoDB package

npm install --save nocodb

Homebrew

Run following commands to upgrade Homebrew Nocodb version.

# Update the local homebrew formulas
brew update
# Upgrade nocodb package
brew upgrade nocodb
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/getting-started/terminologies/index.html b/packages/noco-docs/dist/getting-started/terminologies/index.html new file mode 100644 index 0000000000..6e5e48ea1c --- /dev/null +++ b/packages/noco-docs/dist/getting-started/terminologies/index.html @@ -0,0 +1,16 @@ + + + + + +NocoDB terminologies | NocoDB + + + + +
+
Version: Latest

NocoDB terminologies

To maximize your use of NocoDB, it's beneficial to become familiar with some common terms.

Within this section, we've provided straightforward explanations for keywords and phrases that are relevant to NocoDB's functionality and capabilities. This resource is designed to assist you in gaining a deeper understanding of NocoDB as you embark on the process of setting up workspaces, bases, tables, and various other elements within the platform.

Layout

The layout below shows the main parts of NocoDB's user interface.

image

  1. Sidebar: This component provides quick access to workspaces, bases, tables, and views, facilitating easy navigation within NocoDB.

  2. Navbar: In the Navbar, you'll find essential tools like the Switcher, allowing users to switch between data mode and details mode, and the Share button for collaborative workspace and view sharing.

  3. Toolbar: The Toolbar equips users with various tools to manage records within tables and views effectively. It includes features for sorting, filtering, and editing data, enhancing your control over information.

  4. View Area: The central workspace where data can be viewed in multiple formats - Grid, Gallery, Kanban or Form.

  5. Footbar: A pagination bar for navigating between paginated records.

Terminologies

TermDescription
BaseA base is a collection of one or more tables, often related and linked to one another. Alternative term Project
Base OwnerMember who had created base. There can be only one owner for a base & ownership is non-transferable
Base memberBase member with specific access permissions. Alternative term Member User
CellA cell represents the space created where a column and a row intersect within a grid-like structure. It serves as the fundamental unit for storing data
FieldA field or column in a table is a container for values that share the same data type. Alternative term Column
ModalIn the context of user interfaces, a modal is a type of dialog or overlay that appears on top of the main content or interface and requires user interaction before the user can proceed. Modals are often used to gather user input, display alerts, or confirm actions. They typically "block" the rest of the interface until the user dismisses them, making them a focused and attention-grabbing element
RecordA record represents a row in a table. Alternative term Row
TableA base is housed in tables, where data is logically arranged into rows and columns. A base can have multiple tables. Alternative term Model
TermDescription
ViewA view defines how data within a table is presented and interacted with. Default view type is the grid view; other supported view types include form, gallery, and kanban views.
WebhookA webhook is a mechanism that allows one system to send real-time data to another system or application. It enables automated notifications and data synchronization between different services or platforms by triggering predefined actions or events in response to specific events or updates in the source system.
Workspace OwnerMember who had created workspace. There can be only one owner for a workspace & ownership is non-transferable
Workspace memberWorkspace member with specific access permissions. Alternative term Member User
WorkspaceA workspace is a collection of one or more bases. It offers collaborative access to bases by enabling you to bring together interconnected tables, views, and various elements into a unified and organized entity
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/img/architecture.png b/packages/noco-docs/dist/img/architecture.png new file mode 100644 index 0000000000..db88f48352 Binary files /dev/null and b/packages/noco-docs/dist/img/architecture.png differ diff --git a/packages/noco-docs/dist/img/banner.png b/packages/noco-docs/dist/img/banner.png new file mode 100644 index 0000000000..27d7254d52 Binary files /dev/null and b/packages/noco-docs/dist/img/banner.png differ diff --git a/packages/noco-docs/dist/img/content/airtable-pat-1.png b/packages/noco-docs/dist/img/content/airtable-pat-1.png new file mode 100644 index 0000000000..3c89cae854 Binary files /dev/null and b/packages/noco-docs/dist/img/content/airtable-pat-1.png differ diff --git a/packages/noco-docs/dist/img/content/airtable-pat-2.png b/packages/noco-docs/dist/img/content/airtable-pat-2.png new file mode 100644 index 0000000000..adf2d5e9bf Binary files /dev/null and b/packages/noco-docs/dist/img/content/airtable-pat-2.png differ diff --git a/packages/noco-docs/dist/img/content/airtable-pat-3.png b/packages/noco-docs/dist/img/content/airtable-pat-3.png new file mode 100644 index 0000000000..895ce4f5d6 Binary files /dev/null and b/packages/noco-docs/dist/img/content/airtable-pat-3.png differ diff --git a/packages/noco-docs/dist/img/content/copy-proj-info.png b/packages/noco-docs/dist/img/content/copy-proj-info.png new file mode 100644 index 0000000000..608db0fe5c Binary files /dev/null and b/packages/noco-docs/dist/img/content/copy-proj-info.png differ diff --git a/packages/noco-docs/dist/img/content/data-source.png b/packages/noco-docs/dist/img/content/data-source.png new file mode 100644 index 0000000000..5fabf9bfbc Binary files /dev/null and b/packages/noco-docs/dist/img/content/data-source.png differ diff --git a/packages/noco-docs/dist/img/content/export.png b/packages/noco-docs/dist/img/content/export.png new file mode 100644 index 0000000000..36e6c185b2 Binary files /dev/null and b/packages/noco-docs/dist/img/content/export.png differ diff --git a/packages/noco-docs/dist/img/content/extDB-connection-modal.png b/packages/noco-docs/dist/img/content/extDB-connection-modal.png new file mode 100644 index 0000000000..48085ae32c Binary files /dev/null and b/packages/noco-docs/dist/img/content/extDB-connection-modal.png differ diff --git a/packages/noco-docs/dist/img/content/form.png b/packages/noco-docs/dist/img/content/form.png new file mode 100644 index 0000000000..f00475e2d1 Binary files /dev/null and b/packages/noco-docs/dist/img/content/form.png differ diff --git a/packages/noco-docs/dist/img/content/gallery.png b/packages/noco-docs/dist/img/content/gallery.png new file mode 100644 index 0000000000..e4cdfdd0d3 Binary files /dev/null and b/packages/noco-docs/dist/img/content/gallery.png differ diff --git a/packages/noco-docs/dist/img/content/grid.png b/packages/noco-docs/dist/img/content/grid.png new file mode 100644 index 0000000000..f65593aa80 Binary files /dev/null and b/packages/noco-docs/dist/img/content/grid.png differ diff --git a/packages/noco-docs/dist/img/content/import-csv-2.png b/packages/noco-docs/dist/img/content/import-csv-2.png new file mode 100644 index 0000000000..e5068b10f5 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-csv-2.png differ diff --git a/packages/noco-docs/dist/img/content/import-csv-3.png b/packages/noco-docs/dist/img/content/import-csv-3.png new file mode 100644 index 0000000000..0b275d8ad9 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-csv-3.png differ diff --git a/packages/noco-docs/dist/img/content/import-csv.png b/packages/noco-docs/dist/img/content/import-csv.png new file mode 100644 index 0000000000..634706d7a8 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-csv.png differ diff --git a/packages/noco-docs/dist/img/content/import-xls-2.png b/packages/noco-docs/dist/img/content/import-xls-2.png new file mode 100644 index 0000000000..3944aaefde Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-xls-2.png differ diff --git a/packages/noco-docs/dist/img/content/import-xls-3.png b/packages/noco-docs/dist/img/content/import-xls-3.png new file mode 100644 index 0000000000..0b275d8ad9 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-xls-3.png differ diff --git a/packages/noco-docs/dist/img/content/import-xls.png b/packages/noco-docs/dist/img/content/import-xls.png new file mode 100644 index 0000000000..9a323548e2 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import-xls.png differ diff --git a/packages/noco-docs/dist/img/content/import.png b/packages/noco-docs/dist/img/content/import.png new file mode 100644 index 0000000000..e6b43cfc35 Binary files /dev/null and b/packages/noco-docs/dist/img/content/import.png differ diff --git a/packages/noco-docs/dist/img/content/kanban.png b/packages/noco-docs/dist/img/content/kanban.png new file mode 100644 index 0000000000..d6eb69c5c9 Binary files /dev/null and b/packages/noco-docs/dist/img/content/kanban.png differ diff --git a/packages/noco-docs/dist/img/content/quick-import.png b/packages/noco-docs/dist/img/content/quick-import.png new file mode 100644 index 0000000000..311b8d17aa Binary files /dev/null and b/packages/noco-docs/dist/img/content/quick-import.png differ diff --git a/packages/noco-docs/dist/img/favicon.ico b/packages/noco-docs/dist/img/favicon.ico new file mode 100644 index 0000000000..a9fa2dd153 Binary files /dev/null and b/packages/noco-docs/dist/img/favicon.ico differ diff --git a/packages/noco-docs/dist/img/icon.png b/packages/noco-docs/dist/img/icon.png new file mode 100644 index 0000000000..3281ba6f2f Binary files /dev/null and b/packages/noco-docs/dist/img/icon.png differ diff --git a/packages/noco-docs/dist/img/nocodb-full-color.png b/packages/noco-docs/dist/img/nocodb-full-color.png new file mode 100644 index 0000000000..e0855fcc0a Binary files /dev/null and b/packages/noco-docs/dist/img/nocodb-full-color.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/airtable-api-key.png b/packages/noco-docs/dist/img/v2-unannotated/base/airtable-api-key.png new file mode 100644 index 0000000000..94e7d317d3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/airtable-api-key.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/airtable-share-base.png b/packages/noco-docs/dist/img/v2-unannotated/base/airtable-share-base.png new file mode 100644 index 0000000000..6ceaa1ba16 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/airtable-share-base.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-collaboration.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-collaboration.png new file mode 100644 index 0000000000..0da502b8a2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-collaboration.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-context-menu.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-context-menu.png new file mode 100644 index 0000000000..c6d7d24367 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-create-1.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-create-1.png new file mode 100644 index 0000000000..8b28a33522 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-create-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-create-2.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-create-2.png new file mode 100644 index 0000000000..333184b107 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-dashboard.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-dashboard.png new file mode 100644 index 0000000000..a04e0fb012 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-dashboard.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-delete.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-delete.png new file mode 100644 index 0000000000..2185b3a811 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-delete.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-duplicate.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-duplicate.png new file mode 100644 index 0000000000..cc576a2e4d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-duplicate.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-1.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-1.png new file mode 100644 index 0000000000..db6b5d8827 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-2.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-2.png new file mode 100644 index 0000000000..1777ccfe7e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-3.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-3.png new file mode 100644 index 0000000000..acd94f010e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-airtable-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-1.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-1.png new file mode 100644 index 0000000000..0df31affe3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-2.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-2.png new file mode 100644 index 0000000000..40991bd23f Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-import-from-dashboard-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-relations.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-relations.png new file mode 100644 index 0000000000..9f8e4d8329 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-relations.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-remove-from-starred.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-remove-from-starred.png new file mode 100644 index 0000000000..c51afa8142 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-remove-from-starred.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-rename.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-rename.png new file mode 100644 index 0000000000..22a3dd46e5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-rename.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-settings.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-settings.png new file mode 100644 index 0000000000..f680e73e6f Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-settings.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-starred.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-starred.png new file mode 100644 index 0000000000..56d1b36b14 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-starred.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/base-swagger.png b/packages/noco-docs/dist/img/v2-unannotated/base/base-swagger.png new file mode 100644 index 0000000000..c719c68bc8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/base-swagger.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/pat-1.png b/packages/noco-docs/dist/img/v2-unannotated/base/pat-1.png new file mode 100644 index 0000000000..980c6463a0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/pat-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/pat-2.png b/packages/noco-docs/dist/img/v2-unannotated/base/pat-2.png new file mode 100644 index 0000000000..372a002b9c Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/pat-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/pat-3.png b/packages/noco-docs/dist/img/v2-unannotated/base/pat-3.png new file mode 100644 index 0000000000..3df3d4dd27 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/pat-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/share-base-1.png b/packages/noco-docs/dist/img/v2-unannotated/base/share-base-1.png new file mode 100644 index 0000000000..27de69723e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/share-base-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/base/share-base-2.png b/packages/noco-docs/dist/img/v2-unannotated/base/share-base-2.png new file mode 100644 index 0000000000..17839f1438 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/base/share-base-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/cmd-j.png b/packages/noco-docs/dist/img/v2-unannotated/cmd-j.png new file mode 100644 index 0000000000..bfa8c11a35 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/cmd-j.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/cmd-k.png b/packages/noco-docs/dist/img/v2-unannotated/cmd-k.png new file mode 100644 index 0000000000..b2f9076083 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/cmd-k.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/cmd-l.png b/packages/noco-docs/dist/img/v2-unannotated/cmd-l.png new file mode 100644 index 0000000000..ad86b312bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/cmd-l.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-1.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-1.png new file mode 100644 index 0000000000..91b937e4ae Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-2.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-2.png new file mode 100644 index 0000000000..f5cdc24229 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-3.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-3.png new file mode 100644 index 0000000000..fd4c6a82dc Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/data-source-connect-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-1.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-1.png new file mode 100644 index 0000000000..4b43670f39 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-2.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-2.png new file mode 100644 index 0000000000..e603f953ab Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-3.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-3.png new file mode 100644 index 0000000000..daa6d983fe Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-4.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-4.png new file mode 100644 index 0000000000..16b8545c01 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-4.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-5.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-5.png new file mode 100644 index 0000000000..cbd08c12e2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/ds-5.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/edit-base.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/edit-base.png new file mode 100644 index 0000000000..e83ac9936d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/edit-base.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/data-source/junction-table.png b/packages/noco-docs/dist/img/v2-unannotated/data-source/junction-table.png new file mode 100644 index 0000000000..c08fd1a1a8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/data-source/junction-table.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/display-value.png b/packages/noco-docs/dist/img/v2-unannotated/fields/display-value.png new file mode 100644 index 0000000000..394ca35c48 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/display-value.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-1.png b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-1.png new file mode 100644 index 0000000000..9e91df699e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-2.png b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-2.png new file mode 100644 index 0000000000..9194007e26 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-3.png b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-3.png new file mode 100644 index 0000000000..b2ad44c9e5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-4.png b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-4.png new file mode 100644 index 0000000000..0191a263cb Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-4.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-5.png b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-5.png new file mode 100644 index 0000000000..99cc26bc1e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/editor/editor-5.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/fields-context-menu.png b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-context-menu.png new file mode 100644 index 0000000000..3263d876dd Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/fields-edit.png b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-edit.png new file mode 100644 index 0000000000..c0f160e8cd Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-edit.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/fields-width.png b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-width.png new file mode 100644 index 0000000000..da68226827 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/fields-width.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/linked-records-modal.png b/packages/noco-docs/dist/img/v2-unannotated/fields/linked-records-modal.png new file mode 100644 index 0000000000..b7d39f86b6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/linked-records-modal.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/set-as-display-value.png b/packages/noco-docs/dist/img/v2-unannotated/fields/set-as-display-value.png new file mode 100644 index 0000000000..edb48e0e0f Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/set-as-display-value.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/JSON.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/JSON.png new file mode 100644 index 0000000000..486cf83473 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/JSON.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/QR.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/QR.png new file mode 100644 index 0000000000..328e1e83d8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/QR.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/attachment.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/attachment.png new file mode 100644 index 0000000000..3df1159ac9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/attachment.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/barcode.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/barcode.png new file mode 100644 index 0000000000..da8ed6b7bc Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/barcode.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/checkbox.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/checkbox.png new file mode 100644 index 0000000000..2982ff8e7a Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/checkbox.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/currency.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/currency.png new file mode 100644 index 0000000000..522e9d6e77 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/currency.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/date.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/date.png new file mode 100644 index 0000000000..5d2679ddec Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/date.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/datetime.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/datetime.png new file mode 100644 index 0000000000..8369010e14 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/datetime.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/decimal.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/decimal.png new file mode 100644 index 0000000000..3a9bf8ac93 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/decimal.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/duration.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/duration.png new file mode 100644 index 0000000000..195ff6a752 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/duration.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/email.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/email.png new file mode 100644 index 0000000000..46aa5827df Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/email.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/formula.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/formula.png new file mode 100644 index 0000000000..0bbcadfacd Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/formula.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/geometry.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/geometry.png new file mode 100644 index 0000000000..5cd3f70dd4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/geometry.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/links.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/links.png new file mode 100644 index 0000000000..f86226b805 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/links.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/longtext.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/longtext.png new file mode 100644 index 0000000000..08e9908a51 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/longtext.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/lookup.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/lookup.png new file mode 100644 index 0000000000..b4d3d0089d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/lookup.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/multiselect.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/multiselect.png new file mode 100644 index 0000000000..9c4cdad8d8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/multiselect.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/number.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/number.png new file mode 100644 index 0000000000..f51bde1127 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/number.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-configure-colour.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-configure-colour.png new file mode 100644 index 0000000000..882502abc9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-configure-colour.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-remove.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-remove.png new file mode 100644 index 0000000000..eaccc371d4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/options-remove.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/percent.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/percent.png new file mode 100644 index 0000000000..da1e148f82 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/percent.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/phonenumber.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/phonenumber.png new file mode 100644 index 0000000000..321664ee99 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/phonenumber.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/rating.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/rating.png new file mode 100644 index 0000000000..55960c2372 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/rating.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/rollup.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/rollup.png new file mode 100644 index 0000000000..49d6f5453a Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/rollup.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/select-options.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/select-options.png new file mode 100644 index 0000000000..882502abc9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/select-options.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/singlelinetext.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/singlelinetext.png new file mode 100644 index 0000000000..a5b41f2ca4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/singlelinetext.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/singleselect.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/singleselect.png new file mode 100644 index 0000000000..a137db297f Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/singleselect.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/specificDbType.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/specificDbType.png new file mode 100644 index 0000000000..53cd820c40 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/specificDbType.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/time.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/time.png new file mode 100644 index 0000000000..2f6244b3f2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/time.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/fields/types/url.png b/packages/noco-docs/dist/img/v2-unannotated/fields/types/url.png new file mode 100644 index 0000000000..86eff9c105 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/fields/types/url.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-1.png b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-1.png new file mode 100644 index 0000000000..e049f2c3d4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-2.png b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-2.png new file mode 100644 index 0000000000..998133b0c1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-3.png b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-3.png new file mode 100644 index 0000000000..8a4664c056 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/bulk-update-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/delete-row-bulk.png b/packages/noco-docs/dist/img/v2-unannotated/records/delete-row-bulk.png new file mode 100644 index 0000000000..bc20267dd3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/delete-row-bulk.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/delete-row.png b/packages/noco-docs/dist/img/v2-unannotated/records/delete-row.png new file mode 100644 index 0000000000..b77408cdd0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/delete-row.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-audits.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-audits.png new file mode 100644 index 0000000000..7d83179adb Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-audits.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-2.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-2.png new file mode 100644 index 0000000000..910503d94e Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-3.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-3.png new file mode 100644 index 0000000000..2b69107d67 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit.png new file mode 100644 index 0000000000..2cb0c0cace Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments-edit.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments.png new file mode 100644 index 0000000000..346cc2e7fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-comments.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-context-menu.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-context-menu.png new file mode 100644 index 0000000000..9b2d035d65 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-delete-confirmation.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-delete-confirmation.png new file mode 100644 index 0000000000..7d62ec7d5f Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-delete-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-from-grid.png b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-from-grid.png new file mode 100644 index 0000000000..b96ba8c56c Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/expand-record-from-grid.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/new-record-form.png b/packages/noco-docs/dist/img/v2-unannotated/records/new-record-form.png new file mode 100644 index 0000000000..c6e043d9d1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/new-record-form.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/records/new-record-grid.png b/packages/noco-docs/dist/img/v2-unannotated/records/new-record-grid.png new file mode 100644 index 0000000000..722b7b67c3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/records/new-record-grid.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-details/details-api-snippet.png b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-api-snippet.png new file mode 100644 index 0000000000..f59e9c98fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-api-snippet.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-details/details-field-editor.png b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-field-editor.png new file mode 100644 index 0000000000..943d7ff2bc Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-field-editor.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-details/details-relations.png b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-relations.png new file mode 100644 index 0000000000..268465a9e3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-relations.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-details/details-tab.png b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-tab.png new file mode 100644 index 0000000000..40a0be52eb Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-tab.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-details/details-webhook.png b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-webhook.png new file mode 100644 index 0000000000..ceffbf4f0b Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-details/details-webhook.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/change-cover-image.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/change-cover-image.png new file mode 100644 index 0000000000..f463d15c54 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/change-cover-image.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/download.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/download.png new file mode 100644 index 0000000000..117208541a Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/download.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/fields-hide-reorder.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/fields-hide-reorder.png new file mode 100644 index 0000000000..fe47084536 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/fields-hide-reorder.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-1.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-1.png new file mode 100644 index 0000000000..ba0469cca7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-2.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-2.png new file mode 100644 index 0000000000..ccf2cdb26c Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-3.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-3.png new file mode 100644 index 0000000000..d7fdb57521 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-4.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-4.png new file mode 100644 index 0000000000..ff44cedc2d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-4.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-blank.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-blank.png new file mode 100644 index 0000000000..e1dce731fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-blank.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-null-empty.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-null-empty.png new file mode 100644 index 0000000000..2645426c10 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/filter-is-null-empty.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-1.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-1.png new file mode 100644 index 0000000000..1fbe1cd7b2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-2.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-2.png new file mode 100644 index 0000000000..c2d55f6768 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/group-by-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-1.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-1.png new file mode 100644 index 0000000000..99e13b6228 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-2.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-2.png new file mode 100644 index 0000000000..55925773f7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-3.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-3.png new file mode 100644 index 0000000000..12b0d01a45 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-4.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-4.png new file mode 100644 index 0000000000..6f99f89c54 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-4.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-5.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-5.png new file mode 100644 index 0000000000..9117c59f53 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/row-height-5.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-1.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-1.png new file mode 100644 index 0000000000..418e408bca Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-2.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-2.png new file mode 100644 index 0000000000..9677b624f6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-3.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-3.png new file mode 100644 index 0000000000..6f2adb4ad6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/sort-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table-operations/table-search.png b/packages/noco-docs/dist/img/v2-unannotated/table-operations/table-search.png new file mode 100644 index 0000000000..f121b5f007 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table-operations/table-search.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/import-csv-url.png b/packages/noco-docs/dist/img/v2-unannotated/table/import-csv-url.png new file mode 100644 index 0000000000..f4eba42076 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/import-csv-url.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/import-csv.png b/packages/noco-docs/dist/img/v2-unannotated/table/import-csv.png new file mode 100644 index 0000000000..b0c6d70a05 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/import-csv.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/import-stage-2.png b/packages/noco-docs/dist/img/v2-unannotated/table/import-stage-2.png new file mode 100644 index 0000000000..81131f59af Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/import-stage-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-change-icon.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-change-icon.png new file mode 100644 index 0000000000..fad85b862c Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-change-icon.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-context-menu.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-context-menu.png new file mode 100644 index 0000000000..983af36488 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-create-1.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-create-1.png new file mode 100644 index 0000000000..8356a43078 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-create-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-create-2.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-create-2.png new file mode 100644 index 0000000000..ff87f5d7e3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-delete.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-delete.png new file mode 100644 index 0000000000..6b6462e979 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-delete.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-duplicate.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-duplicate.png new file mode 100644 index 0000000000..a2075bce17 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-duplicate.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-dashboard.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-dashboard.png new file mode 100644 index 0000000000..49de9458a8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-dashboard.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-sidebar.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-sidebar.png new file mode 100644 index 0000000000..71c045ba26 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-import-from-sidebar.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/table-rename.png b/packages/noco-docs/dist/img/v2-unannotated/table/table-rename.png new file mode 100644 index 0000000000..8a00f99a84 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/table-rename.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/tables-change-icon.png b/packages/noco-docs/dist/img/v2-unannotated/table/tables-change-icon.png new file mode 100644 index 0000000000..287338f996 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/tables-change-icon.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-1.png b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-1.png new file mode 100644 index 0000000000..b9935ec3e9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-2.png b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-2.png new file mode 100644 index 0000000000..b188eebdbc Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-3.png b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-3.png new file mode 100644 index 0000000000..a944762910 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-3.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-url.png b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-url.png new file mode 100644 index 0000000000..b101e977f4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/table/upload-csv-url.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/create-view-1.png b/packages/noco-docs/dist/img/v2-unannotated/views/create-view-1.png new file mode 100644 index 0000000000..70a1636949 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/create-view-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/create-view-2.png b/packages/noco-docs/dist/img/v2-unannotated/views/create-view-2.png new file mode 100644 index 0000000000..864e61d3bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/create-view-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view-add-field.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-add-field.png new file mode 100644 index 0000000000..12094b601d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-add-field.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view-lable-help-text.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-lable-help-text.png new file mode 100644 index 0000000000..91df51ec07 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-lable-help-text.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view-remove-field.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-remove-field.png new file mode 100644 index 0000000000..da682de65b Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-remove-field.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view-shared.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-shared.png new file mode 100644 index 0000000000..03eba6f8b9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-shared.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view-title-description.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-title-description.png new file mode 100644 index 0000000000..f2f75cbda3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view-title-description.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/form-view.png b/packages/noco-docs/dist/img/v2-unannotated/views/form-view.png new file mode 100644 index 0000000000..c0c93390c2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/form-view.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/gallery.png b/packages/noco-docs/dist/img/v2-unannotated/views/gallery.png new file mode 100644 index 0000000000..b0cab75474 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/gallery.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/grid.png b/packages/noco-docs/dist/img/v2-unannotated/views/grid.png new file mode 100644 index 0000000000..92666f2510 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/grid.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban-add-record.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-add-record.png new file mode 100644 index 0000000000..22a876f884 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-add-record.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban-change-stack.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-change-stack.png new file mode 100644 index 0000000000..cf5ace5eec Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-change-stack.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban-collapse-stack.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-collapse-stack.png new file mode 100644 index 0000000000..ad77d1d385 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-collapse-stack.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban-delete-stack-confirmation.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-delete-stack-confirmation.png new file mode 100644 index 0000000000..66a8c87768 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-delete-stack-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban-edit-stack-options.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-edit-stack-options.png new file mode 100644 index 0000000000..580f9a4c39 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban-edit-stack-options.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/kanban.png b/packages/noco-docs/dist/img/v2-unannotated/views/kanban.png new file mode 100644 index 0000000000..cfdfc4782d Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/kanban.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/locked-view.png b/packages/noco-docs/dist/img/v2-unannotated/views/locked-view.png new file mode 100644 index 0000000000..5a7931c551 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/locked-view.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/share-button.png b/packages/noco-docs/dist/img/v2-unannotated/views/share-button.png new file mode 100644 index 0000000000..ef1ecc3800 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/share-button.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/share-view-1.png b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-1.png new file mode 100644 index 0000000000..536cc5b0b0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-1.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/share-view-form.png b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-form.png new file mode 100644 index 0000000000..918d890ff0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-form.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/share-view-password.png b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-password.png new file mode 100644 index 0000000000..23c3cd0bcf Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/share-view-password.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/share-view.png b/packages/noco-docs/dist/img/v2-unannotated/views/share-view.png new file mode 100644 index 0000000000..f0ef0639ef Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/share-view.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/survey-form.png b/packages/noco-docs/dist/img/v2-unannotated/views/survey-form.png new file mode 100644 index 0000000000..7d4d074873 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/survey-form.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/views/views-change-icon.png b/packages/noco-docs/dist/img/v2-unannotated/views/views-change-icon.png new file mode 100644 index 0000000000..88dcec08e1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/views/views-change-icon.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/webhook/webhook-list.png b/packages/noco-docs/dist/img/v2-unannotated/webhook/webhook-list.png new file mode 100644 index 0000000000..c8db8c4da2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/webhook/webhook-list.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-collaboration.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-collaboration.png new file mode 100644 index 0000000000..37ca8233da Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-collaboration.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-context-menu.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-context-menu.png new file mode 100644 index 0000000000..e3b9ca2c42 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-create-2.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-create-2.png new file mode 100644 index 0000000000..0cfa155c50 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete-confirmation.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete-confirmation.png new file mode 100644 index 0000000000..cb8d59ddc1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete.png new file mode 100644 index 0000000000..c891f3d8cc Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-delete.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-list.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-list.png new file mode 100644 index 0000000000..62ce1a30ff Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-list.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-remove.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-remove.png new file mode 100644 index 0000000000..49fd6284b0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-remove.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-role-change.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-role-change.png new file mode 100644 index 0000000000..921d8368c8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-members-role-change.png differ diff --git a/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-rename.png b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-rename.png new file mode 100644 index 0000000000..a8b757bcf5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2-unannotated/workspace/workspace-rename.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/account-settings.png b/packages/noco-docs/dist/img/v2/account-settings/account-settings.png new file mode 100644 index 0000000000..77b8df391f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/account-settings.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/api-token-1.png b/packages/noco-docs/dist/img/v2/account-settings/api-token-1.png new file mode 100644 index 0000000000..0ce6938614 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/api-token-1.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/api-token-2.png b/packages/noco-docs/dist/img/v2/account-settings/api-token-2.png new file mode 100644 index 0000000000..0a9d355d1d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/api-token-2.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/api-token-3.png b/packages/noco-docs/dist/img/v2/account-settings/api-token-3.png new file mode 100644 index 0000000000..78b8a42be6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/api-token-3.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/api-token-4.png b/packages/noco-docs/dist/img/v2/account-settings/api-token-4.png new file mode 100644 index 0000000000..a36c1ae8aa Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/api-token-4.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/invite-only-sign-up.png b/packages/noco-docs/dist/img/v2/account-settings/invite-only-sign-up.png new file mode 100644 index 0000000000..b81a8259fb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/invite-only-sign-up.png differ diff --git a/packages/noco-docs/dist/img/v2/account-settings/profile-page.png b/packages/noco-docs/dist/img/v2/account-settings/profile-page.png new file mode 100644 index 0000000000..595b45f0b3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/account-settings/profile-page.png differ diff --git a/packages/noco-docs/dist/img/v2/base/airtable-api-key.png b/packages/noco-docs/dist/img/v2/base/airtable-api-key.png new file mode 100644 index 0000000000..eed641ad87 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/airtable-api-key.png differ diff --git a/packages/noco-docs/dist/img/v2/base/airtable-share-base.png b/packages/noco-docs/dist/img/v2/base/airtable-share-base.png new file mode 100644 index 0000000000..fe250b7ca2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/airtable-share-base.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-collaboration.png b/packages/noco-docs/dist/img/v2/base/base-collaboration.png new file mode 100644 index 0000000000..bfc9bd262f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-collaboration.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-context-menu.png b/packages/noco-docs/dist/img/v2/base/base-context-menu.png new file mode 100644 index 0000000000..6d9102ee53 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-create-1.png b/packages/noco-docs/dist/img/v2/base/base-create-1.png new file mode 100644 index 0000000000..88e625b741 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-create-1.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-create-2.png b/packages/noco-docs/dist/img/v2/base/base-create-2.png new file mode 100644 index 0000000000..5119546d7f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-dashboard.png b/packages/noco-docs/dist/img/v2/base/base-dashboard.png new file mode 100644 index 0000000000..201cff79a5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-dashboard.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-delete.png b/packages/noco-docs/dist/img/v2/base/base-delete.png new file mode 100644 index 0000000000..5349a52ccf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-delete.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-duplicate.png b/packages/noco-docs/dist/img/v2/base/base-duplicate.png new file mode 100644 index 0000000000..0624664d6b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-duplicate.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-import-airtable-1.png b/packages/noco-docs/dist/img/v2/base/base-import-airtable-1.png new file mode 100644 index 0000000000..cbcccdd982 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-import-airtable-1.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-import-airtable-2.png b/packages/noco-docs/dist/img/v2/base/base-import-airtable-2.png new file mode 100644 index 0000000000..19a4e3c5d4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-import-airtable-2.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-import-airtable-3.png b/packages/noco-docs/dist/img/v2/base/base-import-airtable-3.png new file mode 100644 index 0000000000..b8d6f36e7b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-import-airtable-3.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-1.png b/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-1.png new file mode 100644 index 0000000000..7d066c0578 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-1.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-2.png b/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-2.png new file mode 100644 index 0000000000..f824e21d6d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-import-from-dashboard-2.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-relations.png b/packages/noco-docs/dist/img/v2/base/base-relations.png new file mode 100644 index 0000000000..9f8e4d8329 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-relations.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-remove-from-starred.png b/packages/noco-docs/dist/img/v2/base/base-remove-from-starred.png new file mode 100644 index 0000000000..e330aee3d0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-remove-from-starred.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-rename.png b/packages/noco-docs/dist/img/v2/base/base-rename.png new file mode 100644 index 0000000000..979a7a138f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-rename.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-settings.png b/packages/noco-docs/dist/img/v2/base/base-settings.png new file mode 100644 index 0000000000..f680e73e6f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-settings.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-starred.png b/packages/noco-docs/dist/img/v2/base/base-starred.png new file mode 100644 index 0000000000..e09d635f23 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-starred.png differ diff --git a/packages/noco-docs/dist/img/v2/base/base-swagger.png b/packages/noco-docs/dist/img/v2/base/base-swagger.png new file mode 100644 index 0000000000..c719c68bc8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/base-swagger.png differ diff --git a/packages/noco-docs/dist/img/v2/base/pat-1.png b/packages/noco-docs/dist/img/v2/base/pat-1.png new file mode 100644 index 0000000000..b7e1b5ea57 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/pat-1.png differ diff --git a/packages/noco-docs/dist/img/v2/base/pat-2.png b/packages/noco-docs/dist/img/v2/base/pat-2.png new file mode 100644 index 0000000000..8f2385987d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/pat-2.png differ diff --git a/packages/noco-docs/dist/img/v2/base/pat-3.png b/packages/noco-docs/dist/img/v2/base/pat-3.png new file mode 100644 index 0000000000..e05623fadc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/pat-3.png differ diff --git a/packages/noco-docs/dist/img/v2/base/share-base-1.png b/packages/noco-docs/dist/img/v2/base/share-base-1.png new file mode 100644 index 0000000000..0ca9eec1ef Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/share-base-1.png differ diff --git a/packages/noco-docs/dist/img/v2/base/share-base-2.png b/packages/noco-docs/dist/img/v2/base/share-base-2.png new file mode 100644 index 0000000000..71065f2454 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/share-base-2.png differ diff --git a/packages/noco-docs/dist/img/v2/base/share-base-edit-access.png b/packages/noco-docs/dist/img/v2/base/share-base-edit-access.png new file mode 100644 index 0000000000..22e72f5407 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/share-base-edit-access.png differ diff --git a/packages/noco-docs/dist/img/v2/base/share-base-enable-public-access.png b/packages/noco-docs/dist/img/v2/base/share-base-enable-public-access.png new file mode 100644 index 0000000000..f6d4f9ac54 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/share-base-enable-public-access.png differ diff --git a/packages/noco-docs/dist/img/v2/base/share-base-iframe.png b/packages/noco-docs/dist/img/v2/base/share-base-iframe.png new file mode 100644 index 0000000000..55353a55ce Binary files /dev/null and b/packages/noco-docs/dist/img/v2/base/share-base-iframe.png differ diff --git a/packages/noco-docs/dist/img/v2/cmd-j.png b/packages/noco-docs/dist/img/v2/cmd-j.png new file mode 100644 index 0000000000..bfa8c11a35 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/cmd-j.png differ diff --git a/packages/noco-docs/dist/img/v2/cmd-k.png b/packages/noco-docs/dist/img/v2/cmd-k.png new file mode 100644 index 0000000000..b2f9076083 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/cmd-k.png differ diff --git a/packages/noco-docs/dist/img/v2/cmd-l.png b/packages/noco-docs/dist/img/v2/cmd-l.png new file mode 100644 index 0000000000..ad86b312bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/cmd-l.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/audit-logs.png b/packages/noco-docs/dist/img/v2/data-source/audit-logs.png new file mode 100644 index 0000000000..0d23ca1933 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/audit-logs.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/audit.png b/packages/noco-docs/dist/img/v2/data-source/audit.png new file mode 100644 index 0000000000..4634d489db Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/audit.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-2.png b/packages/noco-docs/dist/img/v2/data-source/data-source-2.png new file mode 100644 index 0000000000..0dfb695bb1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-2.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-3.png b/packages/noco-docs/dist/img/v2/data-source/data-source-3.png new file mode 100644 index 0000000000..77346e40fe Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-3.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-4.png b/packages/noco-docs/dist/img/v2/data-source/data-source-4.png new file mode 100644 index 0000000000..c41c21752f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-4.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-connect-1.png b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-1.png new file mode 100644 index 0000000000..d893e46378 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-1.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-connect-2.png b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-2.png new file mode 100644 index 0000000000..98654540ea Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-2.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-connect-3.png b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-3.png new file mode 100644 index 0000000000..4222ea2627 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-connect-3.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-edit.png b/packages/noco-docs/dist/img/v2/data-source/data-source-edit.png new file mode 100644 index 0000000000..314df70957 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-edit.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-meta-sync.png b/packages/noco-docs/dist/img/v2/data-source/data-source-meta-sync.png new file mode 100644 index 0000000000..70c10a1458 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-meta-sync.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-post-sync.png b/packages/noco-docs/dist/img/v2/data-source/data-source-post-sync.png new file mode 100644 index 0000000000..bec1f18dec Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-post-sync.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-unlink.png b/packages/noco-docs/dist/img/v2/data-source/data-source-unlink.png new file mode 100644 index 0000000000..8172914464 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-unlink.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source-visibility.png b/packages/noco-docs/dist/img/v2/data-source/data-source-visibility.png new file mode 100644 index 0000000000..b7c382e7f4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source-visibility.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/data-source.png b/packages/noco-docs/dist/img/v2/data-source/data-source.png new file mode 100644 index 0000000000..3311b364dc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/data-source.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/edit-base.png b/packages/noco-docs/dist/img/v2/data-source/edit-base.png new file mode 100644 index 0000000000..1de6dfd463 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/edit-base.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/junction-table.png b/packages/noco-docs/dist/img/v2/data-source/junction-table.png new file mode 100644 index 0000000000..c08fd1a1a8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/junction-table.png differ diff --git a/packages/noco-docs/dist/img/v2/data-source/ui-acl.png b/packages/noco-docs/dist/img/v2/data-source/ui-acl.png new file mode 100644 index 0000000000..ef95c1daa6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/data-source/ui-acl.png differ diff --git a/packages/noco-docs/dist/img/v2/engineering/engineering-search-by-tags.png b/packages/noco-docs/dist/img/v2/engineering/engineering-search-by-tags.png new file mode 100644 index 0000000000..bff0b02246 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/engineering/engineering-search-by-tags.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/QR.png b/packages/noco-docs/dist/img/v2/fields/QR.png new file mode 100644 index 0000000000..14be0c0c52 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/QR.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/URL.png b/packages/noco-docs/dist/img/v2/fields/URL.png new file mode 100644 index 0000000000..39d46a0ce0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/URL.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/add-link-modal.png b/packages/noco-docs/dist/img/v2/fields/add-link-modal.png new file mode 100644 index 0000000000..eed317543b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/add-link-modal.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/attachment-cell-display.png b/packages/noco-docs/dist/img/v2/fields/attachment-cell-display.png new file mode 100644 index 0000000000..801d391e63 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/attachment-cell-display.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/attachment-cell.png b/packages/noco-docs/dist/img/v2/fields/attachment-cell.png new file mode 100644 index 0000000000..ed7c6e68a2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/attachment-cell.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/attachment-expand.png b/packages/noco-docs/dist/img/v2/fields/attachment-expand.png new file mode 100644 index 0000000000..7d39aa05db Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/attachment-expand.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/attachment.png b/packages/noco-docs/dist/img/v2/fields/attachment.png new file mode 100644 index 0000000000..39316001fc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/attachment.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/barcode-cell.png b/packages/noco-docs/dist/img/v2/fields/barcode-cell.png new file mode 100644 index 0000000000..fbb3c59ed9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/barcode-cell.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/barcode-expand.png b/packages/noco-docs/dist/img/v2/fields/barcode-expand.png new file mode 100644 index 0000000000..b10ba5704a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/barcode-expand.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/barcode.png b/packages/noco-docs/dist/img/v2/fields/barcode.png new file mode 100644 index 0000000000..c26aad8cf8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/barcode.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/checkbox-icon.png b/packages/noco-docs/dist/img/v2/fields/checkbox-icon.png new file mode 100644 index 0000000000..181bf72035 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/checkbox-icon.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/checkbox.png b/packages/noco-docs/dist/img/v2/fields/checkbox.png new file mode 100644 index 0000000000..74a46319e8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/checkbox.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/currency-cell-display.png b/packages/noco-docs/dist/img/v2/fields/currency-cell-display.png new file mode 100644 index 0000000000..dc019c6961 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/currency-cell-display.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/currency.png b/packages/noco-docs/dist/img/v2/fields/currency.png new file mode 100644 index 0000000000..a0d60ecde1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/currency.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/date.png b/packages/noco-docs/dist/img/v2/fields/date.png new file mode 100644 index 0000000000..99dba480c8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/date.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/datetime.png b/packages/noco-docs/dist/img/v2/fields/datetime.png new file mode 100644 index 0000000000..731eb2b9e6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/datetime.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/decimal.png b/packages/noco-docs/dist/img/v2/fields/decimal.png new file mode 100644 index 0000000000..00c81cb863 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/decimal.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/detete-field-confirmation.png b/packages/noco-docs/dist/img/v2/fields/detete-field-confirmation.png new file mode 100644 index 0000000000..fb5f3c20fb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/detete-field-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/display-value-in-linked-record.png b/packages/noco-docs/dist/img/v2/fields/display-value-in-linked-record.png new file mode 100644 index 0000000000..213e7ee4f8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/display-value-in-linked-record.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/display-value.png b/packages/noco-docs/dist/img/v2/fields/display-value.png new file mode 100644 index 0000000000..34ce596af7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/display-value.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/duration.png b/packages/noco-docs/dist/img/v2/fields/duration.png new file mode 100644 index 0000000000..3f65d9fc9d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/duration.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-1.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-1.png new file mode 100644 index 0000000000..c199cb0a5d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-1.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-2.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-2.png new file mode 100644 index 0000000000..4068a38700 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-2.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-3.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-3.png new file mode 100644 index 0000000000..f7e04a367b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-3.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-4.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-4.png new file mode 100644 index 0000000000..46cf4c1c0b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-4.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-5.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-5.png new file mode 100644 index 0000000000..4fab59788c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-5.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-6.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-6.png new file mode 100644 index 0000000000..e998bf8d4b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-6.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/editor/editor-7.png b/packages/noco-docs/dist/img/v2/fields/editor/editor-7.png new file mode 100644 index 0000000000..17218b0796 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/editor/editor-7.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/email.png b/packages/noco-docs/dist/img/v2/fields/email.png new file mode 100644 index 0000000000..069ed67c01 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/email.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/fields-context-menu.png b/packages/noco-docs/dist/img/v2/fields/fields-context-menu.png new file mode 100644 index 0000000000..4a815c7549 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/fields-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/fields-edit-2.png b/packages/noco-docs/dist/img/v2/fields/fields-edit-2.png new file mode 100644 index 0000000000..439878e2ab Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/fields-edit-2.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/fields-edit-3.png b/packages/noco-docs/dist/img/v2/fields/fields-edit-3.png new file mode 100644 index 0000000000..2557134572 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/fields-edit-3.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/fields-edit-4.png b/packages/noco-docs/dist/img/v2/fields/fields-edit-4.png new file mode 100644 index 0000000000..894055832c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/fields-edit-4.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/fields-width.png b/packages/noco-docs/dist/img/v2/fields/fields-width.png new file mode 100644 index 0000000000..44d9debaf1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/fields-width.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/formula.png b/packages/noco-docs/dist/img/v2/fields/formula.png new file mode 100644 index 0000000000..5a733b0038 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/formula.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/geometry.png b/packages/noco-docs/dist/img/v2/fields/geometry.png new file mode 100644 index 0000000000..39effefe37 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/geometry.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/json.png b/packages/noco-docs/dist/img/v2/fields/json.png new file mode 100644 index 0000000000..5679829b99 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/json.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/linked-record-modal.png b/packages/noco-docs/dist/img/v2/fields/linked-record-modal.png new file mode 100644 index 0000000000..841c40dbd9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/linked-record-modal.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/linked-records-modal.png b/packages/noco-docs/dist/img/v2/fields/linked-records-modal.png new file mode 100644 index 0000000000..29ea518113 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/linked-records-modal.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/links-cell-display.png b/packages/noco-docs/dist/img/v2/fields/links-cell-display.png new file mode 100644 index 0000000000..a41c73d62f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/links-cell-display.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/links.png b/packages/noco-docs/dist/img/v2/fields/links.png new file mode 100644 index 0000000000..acb2944ffd Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/links.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/long-text-expand-2.png b/packages/noco-docs/dist/img/v2/fields/long-text-expand-2.png new file mode 100644 index 0000000000..427913f1cb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/long-text-expand-2.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/long-text-expand.png b/packages/noco-docs/dist/img/v2/fields/long-text-expand.png new file mode 100644 index 0000000000..d189d890d5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/long-text-expand.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/long-text.png b/packages/noco-docs/dist/img/v2/fields/long-text.png new file mode 100644 index 0000000000..7989d4ca24 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/long-text.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/lookup.png b/packages/noco-docs/dist/img/v2/fields/lookup.png new file mode 100644 index 0000000000..170fa7dfd7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/lookup.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/multi-select.png b/packages/noco-docs/dist/img/v2/fields/multi-select.png new file mode 100644 index 0000000000..819e2e21de Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/multi-select.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/number.png b/packages/noco-docs/dist/img/v2/fields/number.png new file mode 100644 index 0000000000..85c9d64c94 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/number.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/percent.png b/packages/noco-docs/dist/img/v2/fields/percent.png new file mode 100644 index 0000000000..b6b4eec9c1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/percent.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/phone.png b/packages/noco-docs/dist/img/v2/fields/phone.png new file mode 100644 index 0000000000..384e26158f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/phone.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/qr-cell-display.png b/packages/noco-docs/dist/img/v2/fields/qr-cell-display.png new file mode 100644 index 0000000000..794974e1de Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/qr-cell-display.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/qr-expand.png b/packages/noco-docs/dist/img/v2/fields/qr-expand.png new file mode 100644 index 0000000000..ad20576296 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/qr-expand.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/rating-cell.png b/packages/noco-docs/dist/img/v2/fields/rating-cell.png new file mode 100644 index 0000000000..06bb2c1d8c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/rating-cell.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/rating-icon.png b/packages/noco-docs/dist/img/v2/fields/rating-icon.png new file mode 100644 index 0000000000..6e5c40a1dc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/rating-icon.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/rating.png b/packages/noco-docs/dist/img/v2/fields/rating.png new file mode 100644 index 0000000000..8ca3c957af Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/rating.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/rollup.png b/packages/noco-docs/dist/img/v2/fields/rollup.png new file mode 100644 index 0000000000..592369643e Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/rollup.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/set-as-display-value.png b/packages/noco-docs/dist/img/v2/fields/set-as-display-value.png new file mode 100644 index 0000000000..0b12a01968 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/set-as-display-value.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/single-line-text.png b/packages/noco-docs/dist/img/v2/fields/single-line-text.png new file mode 100644 index 0000000000..ef2b35e1a5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/single-line-text.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/single-select-color.png b/packages/noco-docs/dist/img/v2/fields/single-select-color.png new file mode 100644 index 0000000000..b07cf8a859 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/single-select-color.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/single-select-delete.png b/packages/noco-docs/dist/img/v2/fields/single-select-delete.png new file mode 100644 index 0000000000..6596f15646 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/single-select-delete.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/single-select-reorder.png b/packages/noco-docs/dist/img/v2/fields/single-select-reorder.png new file mode 100644 index 0000000000..20cc63ff85 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/single-select-reorder.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/single-select.png b/packages/noco-docs/dist/img/v2/fields/single-select.png new file mode 100644 index 0000000000..b53f99ef64 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/single-select.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/specific-db-type.png b/packages/noco-docs/dist/img/v2/fields/specific-db-type.png new file mode 100644 index 0000000000..be5d764e1b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/specific-db-type.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/time.png b/packages/noco-docs/dist/img/v2/fields/time.png new file mode 100644 index 0000000000..454b28df67 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/time.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/JSON.png b/packages/noco-docs/dist/img/v2/fields/types/JSON.png new file mode 100644 index 0000000000..27295fa3a0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/JSON.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/QR.png b/packages/noco-docs/dist/img/v2/fields/types/QR.png new file mode 100644 index 0000000000..62414db68d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/QR.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/attachment.png b/packages/noco-docs/dist/img/v2/fields/types/attachment.png new file mode 100644 index 0000000000..21ecee56f2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/attachment.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/barcode.png b/packages/noco-docs/dist/img/v2/fields/types/barcode.png new file mode 100644 index 0000000000..fba526caac Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/barcode.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/checkbox.png b/packages/noco-docs/dist/img/v2/fields/types/checkbox.png new file mode 100644 index 0000000000..65f833fdad Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/checkbox.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/currency.png b/packages/noco-docs/dist/img/v2/fields/types/currency.png new file mode 100644 index 0000000000..6161091e43 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/currency.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/date.png b/packages/noco-docs/dist/img/v2/fields/types/date.png new file mode 100644 index 0000000000..ffd1295ee6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/date.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/datetime.png b/packages/noco-docs/dist/img/v2/fields/types/datetime.png new file mode 100644 index 0000000000..f478901c34 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/datetime.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/decimal.png b/packages/noco-docs/dist/img/v2/fields/types/decimal.png new file mode 100644 index 0000000000..041e270947 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/decimal.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/duration.png b/packages/noco-docs/dist/img/v2/fields/types/duration.png new file mode 100644 index 0000000000..4f618d63a0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/duration.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/email.png b/packages/noco-docs/dist/img/v2/fields/types/email.png new file mode 100644 index 0000000000..f9496c8e31 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/email.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/formula.png b/packages/noco-docs/dist/img/v2/fields/types/formula.png new file mode 100644 index 0000000000..8ab70b0cec Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/formula.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/geometry.png b/packages/noco-docs/dist/img/v2/fields/types/geometry.png new file mode 100644 index 0000000000..bf4b9613ff Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/geometry.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/links.png b/packages/noco-docs/dist/img/v2/fields/types/links.png new file mode 100644 index 0000000000..362bb1d337 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/links.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/longtext.png b/packages/noco-docs/dist/img/v2/fields/types/longtext.png new file mode 100644 index 0000000000..d2b7d780dd Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/longtext.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/lookup.png b/packages/noco-docs/dist/img/v2/fields/types/lookup.png new file mode 100644 index 0000000000..84963a70f6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/lookup.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/multiselect.png b/packages/noco-docs/dist/img/v2/fields/types/multiselect.png new file mode 100644 index 0000000000..9a1d48eea6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/multiselect.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/number.png b/packages/noco-docs/dist/img/v2/fields/types/number.png new file mode 100644 index 0000000000..a5dee2eefb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/number.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/options-change-colour.png b/packages/noco-docs/dist/img/v2/fields/types/options-change-colour.png new file mode 100644 index 0000000000..cb597cb32a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/options-change-colour.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/options-remove.png b/packages/noco-docs/dist/img/v2/fields/types/options-remove.png new file mode 100644 index 0000000000..6499f8fcd8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/options-remove.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/options-reorder.png b/packages/noco-docs/dist/img/v2/fields/types/options-reorder.png new file mode 100644 index 0000000000..729cbfd609 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/options-reorder.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/percent.png b/packages/noco-docs/dist/img/v2/fields/types/percent.png new file mode 100644 index 0000000000..d04a0f09ec Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/percent.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/phonenumber.png b/packages/noco-docs/dist/img/v2/fields/types/phonenumber.png new file mode 100644 index 0000000000..18a8c93f4f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/phonenumber.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/rating.png b/packages/noco-docs/dist/img/v2/fields/types/rating.png new file mode 100644 index 0000000000..00fd09077c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/rating.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/rollup.png b/packages/noco-docs/dist/img/v2/fields/types/rollup.png new file mode 100644 index 0000000000..d4543b3251 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/rollup.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/singlelinetext.png b/packages/noco-docs/dist/img/v2/fields/types/singlelinetext.png new file mode 100644 index 0000000000..44ed64e044 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/singlelinetext.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/singleselect.png b/packages/noco-docs/dist/img/v2/fields/types/singleselect.png new file mode 100644 index 0000000000..d1ce230bb9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/singleselect.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/specific-db-type.png b/packages/noco-docs/dist/img/v2/fields/types/specific-db-type.png new file mode 100644 index 0000000000..31d0ef7f72 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/specific-db-type.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/time.png b/packages/noco-docs/dist/img/v2/fields/types/time.png new file mode 100644 index 0000000000..62ec434508 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/time.png differ diff --git a/packages/noco-docs/dist/img/v2/fields/types/url.png b/packages/noco-docs/dist/img/v2/fields/types/url.png new file mode 100644 index 0000000000..cafa73d84e Binary files /dev/null and b/packages/noco-docs/dist/img/v2/fields/types/url.png differ diff --git a/packages/noco-docs/dist/img/v2/layout-overview.png b/packages/noco-docs/dist/img/v2/layout-overview.png new file mode 100644 index 0000000000..d3e37ac523 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/layout-overview.png differ diff --git a/packages/noco-docs/dist/img/v2/records/bulk-update-1.png b/packages/noco-docs/dist/img/v2/records/bulk-update-1.png new file mode 100644 index 0000000000..3d621bf5e7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/bulk-update-1.png differ diff --git a/packages/noco-docs/dist/img/v2/records/bulk-update-2.png b/packages/noco-docs/dist/img/v2/records/bulk-update-2.png new file mode 100644 index 0000000000..5488ea8c0a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/bulk-update-2.png differ diff --git a/packages/noco-docs/dist/img/v2/records/bulk-update-3.png b/packages/noco-docs/dist/img/v2/records/bulk-update-3.png new file mode 100644 index 0000000000..93e107ef2b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/bulk-update-3.png differ diff --git a/packages/noco-docs/dist/img/v2/records/delete-row-bulk.png b/packages/noco-docs/dist/img/v2/records/delete-row-bulk.png new file mode 100644 index 0000000000..9813fe94ef Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/delete-row-bulk.png differ diff --git a/packages/noco-docs/dist/img/v2/records/delete-row.png b/packages/noco-docs/dist/img/v2/records/delete-row.png new file mode 100644 index 0000000000..9c1c5238fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/delete-row.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-audits.png b/packages/noco-docs/dist/img/v2/records/expand-record-audits.png new file mode 100644 index 0000000000..b4a4c85511 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-audits.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-1.png b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-1.png new file mode 100644 index 0000000000..9dcda8b48b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-1.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-2.png b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-2.png new file mode 100644 index 0000000000..e6599eba1a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-2.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-3.png b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-3.png new file mode 100644 index 0000000000..1b24b70f4b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-comments-edit-3.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-comments.png b/packages/noco-docs/dist/img/v2/records/expand-record-comments.png new file mode 100644 index 0000000000..2fb09917c5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-comments.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-context-menu-2.png b/packages/noco-docs/dist/img/v2/records/expand-record-context-menu-2.png new file mode 100644 index 0000000000..eeed15d36d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-context-menu-2.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-context-menu.png b/packages/noco-docs/dist/img/v2/records/expand-record-context-menu.png new file mode 100644 index 0000000000..491717f105 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-delete-confirmation.png b/packages/noco-docs/dist/img/v2/records/expand-record-delete-confirmation.png new file mode 100644 index 0000000000..efb5d7f401 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-delete-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-edit-detailed.png b/packages/noco-docs/dist/img/v2/records/expand-record-edit-detailed.png new file mode 100644 index 0000000000..309fef7d71 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-edit-detailed.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record-from-grid.png b/packages/noco-docs/dist/img/v2/records/expand-record-from-grid.png new file mode 100644 index 0000000000..a367426048 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record-from-grid.png differ diff --git a/packages/noco-docs/dist/img/v2/records/expand-record.png b/packages/noco-docs/dist/img/v2/records/expand-record.png new file mode 100644 index 0000000000..346cc2e7fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/expand-record.png differ diff --git a/packages/noco-docs/dist/img/v2/records/new-record-form.png b/packages/noco-docs/dist/img/v2/records/new-record-form.png new file mode 100644 index 0000000000..e332c46bda Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/new-record-form.png differ diff --git a/packages/noco-docs/dist/img/v2/records/new-record-grid.png b/packages/noco-docs/dist/img/v2/records/new-record-grid.png new file mode 100644 index 0000000000..8e70d4bc73 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/records/new-record-grid.png differ diff --git a/packages/noco-docs/dist/img/v2/table-details/details-api-snippet.png b/packages/noco-docs/dist/img/v2/table-details/details-api-snippet.png new file mode 100644 index 0000000000..f59e9c98fa Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-details/details-api-snippet.png differ diff --git a/packages/noco-docs/dist/img/v2/table-details/details-field-editor.png b/packages/noco-docs/dist/img/v2/table-details/details-field-editor.png new file mode 100644 index 0000000000..943d7ff2bc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-details/details-field-editor.png differ diff --git a/packages/noco-docs/dist/img/v2/table-details/details-relations.png b/packages/noco-docs/dist/img/v2/table-details/details-relations.png new file mode 100644 index 0000000000..268465a9e3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-details/details-relations.png differ diff --git a/packages/noco-docs/dist/img/v2/table-details/details-tab.png b/packages/noco-docs/dist/img/v2/table-details/details-tab.png new file mode 100644 index 0000000000..40a0be52eb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-details/details-tab.png differ diff --git a/packages/noco-docs/dist/img/v2/table-details/details-webhook.png b/packages/noco-docs/dist/img/v2/table-details/details-webhook.png new file mode 100644 index 0000000000..ceffbf4f0b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-details/details-webhook.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/change-cover-image.png b/packages/noco-docs/dist/img/v2/table-operations/change-cover-image.png new file mode 100644 index 0000000000..03ef3ae2ef Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/change-cover-image.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/download.png b/packages/noco-docs/dist/img/v2/table-operations/download.png new file mode 100644 index 0000000000..17b8a32f21 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/download.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/fields-hide.png b/packages/noco-docs/dist/img/v2/table-operations/fields-hide.png new file mode 100644 index 0000000000..ef742c5976 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/fields-hide.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/fields-reorder.png b/packages/noco-docs/dist/img/v2/table-operations/fields-reorder.png new file mode 100644 index 0000000000..0b76dbaf44 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/fields-reorder.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/fields-show-system-fields.png b/packages/noco-docs/dist/img/v2/table-operations/fields-show-system-fields.png new file mode 100644 index 0000000000..fc2a9ad0d6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/fields-show-system-fields.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-1.png b/packages/noco-docs/dist/img/v2/table-operations/filter-1.png new file mode 100644 index 0000000000..0e3ac05a6c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-2.png b/packages/noco-docs/dist/img/v2/table-operations/filter-2.png new file mode 100644 index 0000000000..162bca5c47 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-3.png b/packages/noco-docs/dist/img/v2/table-operations/filter-3.png new file mode 100644 index 0000000000..847f4f101a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-3.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-4.png b/packages/noco-docs/dist/img/v2/table-operations/filter-4.png new file mode 100644 index 0000000000..d8659ddcad Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-4.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-5.png b/packages/noco-docs/dist/img/v2/table-operations/filter-5.png new file mode 100644 index 0000000000..58ec38fe9d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-5.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-is-blank.png b/packages/noco-docs/dist/img/v2/table-operations/filter-is-blank.png new file mode 100644 index 0000000000..24775f83d4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-is-blank.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/filter-is-null-empty.png b/packages/noco-docs/dist/img/v2/table-operations/filter-is-null-empty.png new file mode 100644 index 0000000000..ac7f481da2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/filter-is-null-empty.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/group-by-1.png b/packages/noco-docs/dist/img/v2/table-operations/group-by-1.png new file mode 100644 index 0000000000..1fbe1cd7b2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/group-by-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/group-by-create.png b/packages/noco-docs/dist/img/v2/table-operations/group-by-create.png new file mode 100644 index 0000000000..9881e94a58 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/group-by-create.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/group-by-delete.png b/packages/noco-docs/dist/img/v2/table-operations/group-by-delete.png new file mode 100644 index 0000000000..5c123a59bc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/group-by-delete.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/group-by-nested.png b/packages/noco-docs/dist/img/v2/table-operations/group-by-nested.png new file mode 100644 index 0000000000..e5db4401c2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/group-by-nested.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/row-height-1.png b/packages/noco-docs/dist/img/v2/table-operations/row-height-1.png new file mode 100644 index 0000000000..72fe3d9963 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/row-height-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/row-height-2.png b/packages/noco-docs/dist/img/v2/table-operations/row-height-2.png new file mode 100644 index 0000000000..55925773f7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/row-height-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/row-height-3.png b/packages/noco-docs/dist/img/v2/table-operations/row-height-3.png new file mode 100644 index 0000000000..12b0d01a45 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/row-height-3.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/row-height-4.png b/packages/noco-docs/dist/img/v2/table-operations/row-height-4.png new file mode 100644 index 0000000000..6f99f89c54 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/row-height-4.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/row-height-5.png b/packages/noco-docs/dist/img/v2/table-operations/row-height-5.png new file mode 100644 index 0000000000..9117c59f53 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/row-height-5.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/sort-1.png b/packages/noco-docs/dist/img/v2/table-operations/sort-1.png new file mode 100644 index 0000000000..b34fff5f62 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/sort-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/sort-2.png b/packages/noco-docs/dist/img/v2/table-operations/sort-2.png new file mode 100644 index 0000000000..35b3148aa4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/sort-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/sort-3.png b/packages/noco-docs/dist/img/v2/table-operations/sort-3.png new file mode 100644 index 0000000000..abc8c5fca8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/sort-3.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/sort-4.png b/packages/noco-docs/dist/img/v2/table-operations/sort-4.png new file mode 100644 index 0000000000..e211971269 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/sort-4.png differ diff --git a/packages/noco-docs/dist/img/v2/table-operations/table-search.png b/packages/noco-docs/dist/img/v2/table-operations/table-search.png new file mode 100644 index 0000000000..f70235c70e Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table-operations/table-search.png differ diff --git a/packages/noco-docs/dist/img/v2/table/import-csv-url.png b/packages/noco-docs/dist/img/v2/table/import-csv-url.png new file mode 100644 index 0000000000..bf3eb9ec63 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/import-csv-url.png differ diff --git a/packages/noco-docs/dist/img/v2/table/import-csv.png b/packages/noco-docs/dist/img/v2/table/import-csv.png new file mode 100644 index 0000000000..3a77b07da2 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/import-csv.png differ diff --git a/packages/noco-docs/dist/img/v2/table/import-stage-2.png b/packages/noco-docs/dist/img/v2/table/import-stage-2.png new file mode 100644 index 0000000000..cb364c68df Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/import-stage-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-change-icon.png b/packages/noco-docs/dist/img/v2/table/table-change-icon.png new file mode 100644 index 0000000000..8793869a9e Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-change-icon.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-context-menu.png b/packages/noco-docs/dist/img/v2/table/table-context-menu.png new file mode 100644 index 0000000000..f9ec6e1655 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-create-1.png b/packages/noco-docs/dist/img/v2/table/table-create-1.png new file mode 100644 index 0000000000..4ab38b4ff6 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-create-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-create-2.png b/packages/noco-docs/dist/img/v2/table/table-create-2.png new file mode 100644 index 0000000000..a0ca29ae1f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-delete.png b/packages/noco-docs/dist/img/v2/table/table-delete.png new file mode 100644 index 0000000000..2bed1d5a8c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-delete.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-duplicate.png b/packages/noco-docs/dist/img/v2/table/table-duplicate.png new file mode 100644 index 0000000000..82f5033377 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-duplicate.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-import-from-dashboard.png b/packages/noco-docs/dist/img/v2/table/table-import-from-dashboard.png new file mode 100644 index 0000000000..635669a34f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-import-from-dashboard.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-import-from-sidebar.png b/packages/noco-docs/dist/img/v2/table/table-import-from-sidebar.png new file mode 100644 index 0000000000..f9d4e31c21 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-import-from-sidebar.png differ diff --git a/packages/noco-docs/dist/img/v2/table/table-rename.png b/packages/noco-docs/dist/img/v2/table/table-rename.png new file mode 100644 index 0000000000..ae7ab507dc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/table-rename.png differ diff --git a/packages/noco-docs/dist/img/v2/table/upload-csv-1.png b/packages/noco-docs/dist/img/v2/table/upload-csv-1.png new file mode 100644 index 0000000000..f0b7446f0f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/upload-csv-1.png differ diff --git a/packages/noco-docs/dist/img/v2/table/upload-csv-2.png b/packages/noco-docs/dist/img/v2/table/upload-csv-2.png new file mode 100644 index 0000000000..16ae9bac14 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/upload-csv-2.png differ diff --git a/packages/noco-docs/dist/img/v2/table/upload-csv-3.png b/packages/noco-docs/dist/img/v2/table/upload-csv-3.png new file mode 100644 index 0000000000..b0c85b04d3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/upload-csv-3.png differ diff --git a/packages/noco-docs/dist/img/v2/table/upload-csv-url.png b/packages/noco-docs/dist/img/v2/table/upload-csv-url.png new file mode 100644 index 0000000000..e74f8d61fc Binary files /dev/null and b/packages/noco-docs/dist/img/v2/table/upload-csv-url.png differ diff --git a/packages/noco-docs/dist/img/v2/views/create-view-1.png b/packages/noco-docs/dist/img/v2/views/create-view-1.png new file mode 100644 index 0000000000..89bf00c321 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/create-view-1.png differ diff --git a/packages/noco-docs/dist/img/v2/views/create-view-2.png b/packages/noco-docs/dist/img/v2/views/create-view-2.png new file mode 100644 index 0000000000..f729d3db50 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/create-view-2.png differ diff --git a/packages/noco-docs/dist/img/v2/views/delete-view-confirmation.png b/packages/noco-docs/dist/img/v2/views/delete-view-confirmation.png new file mode 100644 index 0000000000..730f5964e0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/delete-view-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/views/duplicate-confirmation.png b/packages/noco-docs/dist/img/v2/views/duplicate-confirmation.png new file mode 100644 index 0000000000..6d00794980 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/duplicate-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-specific-configurations.png b/packages/noco-docs/dist/img/v2/views/form-specific-configurations.png new file mode 100644 index 0000000000..9164bbb5bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-specific-configurations.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-add-field.png b/packages/noco-docs/dist/img/v2/views/form-view-add-field.png new file mode 100644 index 0000000000..7d84b87d07 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-add-field.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-field-label-help-text.png b/packages/noco-docs/dist/img/v2/views/form-view-field-label-help-text.png new file mode 100644 index 0000000000..3c55f06d95 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-field-label-help-text.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-layout.png b/packages/noco-docs/dist/img/v2/views/form-view-layout.png new file mode 100644 index 0000000000..d47ffe1c4b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-layout.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-remove-field.png b/packages/noco-docs/dist/img/v2/views/form-view-remove-field.png new file mode 100644 index 0000000000..221c75b063 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-remove-field.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-required-field.png b/packages/noco-docs/dist/img/v2/views/form-view-required-field.png new file mode 100644 index 0000000000..e8c9e0ddfe Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-required-field.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-settings.png b/packages/noco-docs/dist/img/v2/views/form-view-settings.png new file mode 100644 index 0000000000..cd6be7aaf5 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-settings.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view-title-description.png b/packages/noco-docs/dist/img/v2/views/form-view-title-description.png new file mode 100644 index 0000000000..99767a10a8 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view-title-description.png differ diff --git a/packages/noco-docs/dist/img/v2/views/form-view.png b/packages/noco-docs/dist/img/v2/views/form-view.png new file mode 100644 index 0000000000..03eba6f8b9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/form-view.png differ diff --git a/packages/noco-docs/dist/img/v2/views/gallery.png b/packages/noco-docs/dist/img/v2/views/gallery.png new file mode 100644 index 0000000000..b0cab75474 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/gallery.png differ diff --git a/packages/noco-docs/dist/img/v2/views/grid.png b/packages/noco-docs/dist/img/v2/views/grid.png new file mode 100644 index 0000000000..92666f2510 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/grid.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-add-record.png b/packages/noco-docs/dist/img/v2/views/kanban-add-record.png new file mode 100644 index 0000000000..22a876f884 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-add-record.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-change-stack.png b/packages/noco-docs/dist/img/v2/views/kanban-change-stack.png new file mode 100644 index 0000000000..b35ba3701c Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-change-stack.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-collapse-stack.png b/packages/noco-docs/dist/img/v2/views/kanban-collapse-stack.png new file mode 100644 index 0000000000..e0f960d889 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-collapse-stack.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-delete-stack-confirmation.png b/packages/noco-docs/dist/img/v2/views/kanban-delete-stack-confirmation.png new file mode 100644 index 0000000000..c337718ba4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-delete-stack-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-delete-stack.png b/packages/noco-docs/dist/img/v2/views/kanban-delete-stack.png new file mode 100644 index 0000000000..e6b04e0ad9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-delete-stack.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban-edit-stack-options.png b/packages/noco-docs/dist/img/v2/views/kanban-edit-stack-options.png new file mode 100644 index 0000000000..23e468b30b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban-edit-stack-options.png differ diff --git a/packages/noco-docs/dist/img/v2/views/kanban.png b/packages/noco-docs/dist/img/v2/views/kanban.png new file mode 100644 index 0000000000..cfdfc4782d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/kanban.png differ diff --git a/packages/noco-docs/dist/img/v2/views/locked-view.png b/packages/noco-docs/dist/img/v2/views/locked-view.png new file mode 100644 index 0000000000..ad04e57c0f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/locked-view.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-button.png b/packages/noco-docs/dist/img/v2/views/share-button.png new file mode 100644 index 0000000000..2df0e5d9e4 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-button.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view-1.png b/packages/noco-docs/dist/img/v2/views/share-view-1.png new file mode 100644 index 0000000000..46fefb036a Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view-1.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view-copy-link.png b/packages/noco-docs/dist/img/v2/views/share-view-copy-link.png new file mode 100644 index 0000000000..46f235a812 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view-copy-link.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view-download.png b/packages/noco-docs/dist/img/v2/views/share-view-download.png new file mode 100644 index 0000000000..c2921759bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view-download.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view-password.png b/packages/noco-docs/dist/img/v2/views/share-view-password.png new file mode 100644 index 0000000000..29eb03b4d9 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view-password.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-button.png b/packages/noco-docs/dist/img/v2/views/share-view/share-button.png new file mode 100644 index 0000000000..1387a535af Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-button.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view-form.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view-form.png new file mode 100644 index 0000000000..360cce84bf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view-form.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-2.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-2.png new file mode 100644 index 0000000000..5582535fca Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-2.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-3.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-3.png new file mode 100644 index 0000000000..d65edd5487 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal-3.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal.png new file mode 100644 index 0000000000..9517f02a95 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view-modal.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view-password.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view-password.png new file mode 100644 index 0000000000..23c3cd0bcf Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view-password.png differ diff --git a/packages/noco-docs/dist/img/v2/views/share-view/share-view.png b/packages/noco-docs/dist/img/v2/views/share-view/share-view.png new file mode 100644 index 0000000000..f0ef0639ef Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/share-view/share-view.png differ diff --git a/packages/noco-docs/dist/img/v2/views/survey-form.png b/packages/noco-docs/dist/img/v2/views/survey-form.png new file mode 100644 index 0000000000..7d4d074873 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/survey-form.png differ diff --git a/packages/noco-docs/dist/img/v2/views/view-change-icon.png b/packages/noco-docs/dist/img/v2/views/view-change-icon.png new file mode 100644 index 0000000000..7600bafbaa Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/view-change-icon.png differ diff --git a/packages/noco-docs/dist/img/v2/views/view-context-menu.png b/packages/noco-docs/dist/img/v2/views/view-context-menu.png new file mode 100644 index 0000000000..29e74b00d1 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/views/view-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/webhook/create-webhook-1.png b/packages/noco-docs/dist/img/v2/webhook/create-webhook-1.png new file mode 100644 index 0000000000..0c6d91a2bd Binary files /dev/null and b/packages/noco-docs/dist/img/v2/webhook/create-webhook-1.png differ diff --git a/packages/noco-docs/dist/img/v2/webhook/create-webhook-2.png b/packages/noco-docs/dist/img/v2/webhook/create-webhook-2.png new file mode 100644 index 0000000000..149e580f6f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/webhook/create-webhook-2.png differ diff --git a/packages/noco-docs/dist/img/v2/webhook/webhook-list-2.png b/packages/noco-docs/dist/img/v2/webhook/webhook-list-2.png new file mode 100644 index 0000000000..450e01bda0 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/webhook/webhook-list-2.png differ diff --git a/packages/noco-docs/dist/img/v2/webhook/webhook-list-3.png b/packages/noco-docs/dist/img/v2/webhook/webhook-list-3.png new file mode 100644 index 0000000000..f7fefd5111 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/webhook/webhook-list-3.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-collaboration.png b/packages/noco-docs/dist/img/v2/workspace/workspace-collaboration.png new file mode 100644 index 0000000000..a232d9757b Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-collaboration.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-context-menu.png b/packages/noco-docs/dist/img/v2/workspace/workspace-context-menu.png new file mode 100644 index 0000000000..d8c4a57eb3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-context-menu.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-create-2.png b/packages/noco-docs/dist/img/v2/workspace/workspace-create-2.png new file mode 100644 index 0000000000..fa626108af Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-create-2.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-create.png b/packages/noco-docs/dist/img/v2/workspace/workspace-create.png new file mode 100644 index 0000000000..d6bc3f22eb Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-create.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-delete-confirmation.png b/packages/noco-docs/dist/img/v2/workspace/workspace-delete-confirmation.png new file mode 100644 index 0000000000..cbe0d5485d Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-delete-confirmation.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-delete.png b/packages/noco-docs/dist/img/v2/workspace/workspace-delete.png new file mode 100644 index 0000000000..59fa35f455 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-delete.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-members-list.png b/packages/noco-docs/dist/img/v2/workspace/workspace-members-list.png new file mode 100644 index 0000000000..94ca675e9e Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-members-list.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-members-remove.png b/packages/noco-docs/dist/img/v2/workspace/workspace-members-remove.png new file mode 100644 index 0000000000..a12880531f Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-members-remove.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-members-role-change.png b/packages/noco-docs/dist/img/v2/workspace/workspace-members-role-change.png new file mode 100644 index 0000000000..bfc1c4e8b7 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-members-role-change.png differ diff --git a/packages/noco-docs/dist/img/v2/workspace/workspace-rename.png b/packages/noco-docs/dist/img/v2/workspace/workspace-rename.png new file mode 100644 index 0000000000..0259bff0c3 Binary files /dev/null and b/packages/noco-docs/dist/img/v2/workspace/workspace-rename.png differ diff --git a/packages/noco-docs/dist/index.html b/packages/noco-docs/dist/index.html new file mode 100644 index 0000000000..cd09e73fd2 --- /dev/null +++ b/packages/noco-docs/dist/index.html @@ -0,0 +1,16 @@ + + + + + +Welcome | NocoDB + + + + +
+
Version: Latest

Welcome

image

NocoDB is a no-code database platform that allows teams to collaborate and build applications with ease of a familiar and intuitive spreadsheet interface. This allows even non-developers or business users to become software creators.

NocoDB works by connecting to any relational database and transforming them into a smart spreadsheet interface! This allows you to build no-code applications collaboratively with teams. NocoDB currently works with MySQL, PostgreSQL & SQLite (only in Open Source) databases.

Also, NocoDB's app store allows you to build business workflows on views with combination of Slack, Microsoft Teams, Discord, Twilio, Whatsapp, Email & any 3rd party APIs too. Plus NocoDB provides programmatic access to APIs so that you can build integrations with Zapier / Integromat and custom applications too.

Features

Rich Spreadsheet Interface

  •  Basic Operations: Create, Read, Update and Delete on Tables, Fields, and Records
  •  Fields Operations: Sort, Filter, Hide / Un-hide Fields
  •  Multiple Views Types: Grid (By default), Gallery, Form View and Kanban View
  •  View Permissions Types: Collaborative Views & Locked Views
  •  Share Bases / Views: either Public or Private (with Password Protected)
  •  Variant Cell Types: ID, Links, Lookup, Rollup, SingleLineText, Attachment, Currency, Formula and etc
  •  Access Control with Roles : Fine-grained Access Control at different levels
  •  and more ...

App Store for Workflow Automations

We provide different integrations in three main categories. See App Store for details.

  •  Chat : Slack, Discord, Mattermost, and etc
  •  Email : AWS SES, SMTP, MailerSend, and etc
  •  Storage : AWS S3, Google Cloud Storage, Minio, and etc

Programmatic Access

We provide the following ways to let users invoke actions in a programmatic way. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB.

  •  REST APIs
  •  NocoDB SDK
  •  SQL Access : Run SQL queries on your data source from NocoDB UI itself (Coming soon!)

Sync Schema

We allow you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from environment to others. See Sync Schema for details.

Audit

We are keeping all the user operation logs under one place. See Audit for details.

Why are we building this?

Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by a Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings has meant horrible access controls, vendor lockin, data lockin, abrupt price changes & most importantly a glass ceiling on what's possible in the future.

Our Mission

Our mission is to provide the most powerful no-code interface for databases which is Open Source to every single internet business in the world. This would not only democratise access to a powerful computing tool but also bring forth a billion+ people who will have radical tinkering-and-building abilities on internet.

How can I contribute to NocoDB's development ?

Please refer to here for the contribution guidelines.

Where can I join the NocoDB community?

Follow us for daily updates, content, and other activities with our community:

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/opensearch.xml b/packages/noco-docs/dist/opensearch.xml new file mode 100644 index 0000000000..0a0739f350 --- /dev/null +++ b/packages/noco-docs/dist/opensearch.xml @@ -0,0 +1,11 @@ + + + NocoDB + Search NocoDB + UTF-8 + https://nocodb.com/img/favicon.ico + + + https://nocodb.com/ + \ No newline at end of file diff --git a/packages/noco-docs/dist/records/actions-on-record/index.html b/packages/noco-docs/dist/records/actions-on-record/index.html new file mode 100644 index 0000000000..794a1ead7c --- /dev/null +++ b/packages/noco-docs/dist/records/actions-on-record/index.html @@ -0,0 +1,21 @@ + + + + + +Actions on record | NocoDB + + + + +
+
Version: Latest

Actions on record

Keyboard navigation within Grid view

A selected cell can be in one of the following states:

  1. Select state : A single click on the cell selects the cell. When in this state, arrow keys can be used to navigate to adjacent cells.
  2. Edit state : A double click on the cell puts the cell in edit state. Cursor can be moved within the cell using arrow keys.
note
  • Double-click on a cell to put it in edit state directly.
  • From Select state, press Enter key to enter edit state.
  • Press Esc key to exit edit state.
  • From Edit state, press Enter key to save the changes.

Edit state for some cells will be a picker. For example, a cell with Single Select field type will have a picker with options to choose from. In such cases, arrow keys can be used to navigate between options.

Keyboard shortcuts for cell navigation

KeyBehaviour
Jump to first record in this field (in same page)
Jump to last record in this field (in same page)
CCopy cell contents to clipboard
VPaste clipboard contents to cell
EnterSwitch cell in focus to EDIT mode; opens modal/picker if cell is associated with one
EscExit cell EDIT mode
DeleteClear cell
SpaceExpand current record
General cell navigation : left, right, top, bottom
TabMove to next cell horizontally; if on last cell, move to beginning of next record

Update Record

You can start editing by any of the following methods

  • Double-click on cell to edit
  • Click on cell and start typing (this way it will clear the previous content)
  • Click on cell and press enter to start editing

And it will automatically save on blur event or if inactive.

Bulk Update Records

You can bulk update records by

  1. Selecting multiple records that you wish to update together and then
  2. Right-click on the index field area (first column on the grid view) and then select Bulk Update records option from the context menu. This will open Bulk update modal.

On the bulk update modal, +3. Fields area : Select the fields that you want to update. +4. Selected fields area : Enter the new value for the selected fields. +5. Click on the Bulk Update all button +6. A confirmation dialog will be displayed. Click on Confirm to update the records.

danger

This operation cannot be undone.

Bulk Update

Bulk Update

Bulk Update

info

You can drag drop required fields from the Fields area to the Selected fields area & vice versa.
+You can update multiple fields at a time.

Delete Record (Single)

Right-click on record and then from the cell context menu, select Delete Record option.

delete row -1

Delete Record (Bulk)

Select multiple records by using the checkbox in first column and then Delete Selected Records options from the right click context menu.

delete row 2

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/records/create-record/index.html b/packages/noco-docs/dist/records/create-record/index.html new file mode 100644 index 0000000000..e3ad6404cd --- /dev/null +++ b/packages/noco-docs/dist/records/create-record/index.html @@ -0,0 +1,16 @@ + + + + + +Create record | NocoDB + + + + +
+
Version: Latest

Create record

A new record can be added by using the New Record button in the bottom left corner of the grid view. Default behaviour of this button is to add a new empty record at the end of the grid view. Fields for a record can be populated by clicking on the cell and entering the value.

info
  • An empty record can also be added by using + icon in the last record of the grid view.
  • When on last record, Enter key can be used to add a new empty record to the grid view.

image

NocoDB also provides convenience of a form to populate fields in a record. To add a new record using a form,

  1. Click on the up-arrow in New Record button; this expands options for adding a new record.
  2. Select New Record - Form option. This will reconfigure default behaviour of New Record button to add a new record using a form.

image

info

To revert back to default behaviour of New Record button, click on the up-arrow in New Record button and select New Record - Grid option.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/records/expand-record/index.html b/packages/noco-docs/dist/records/expand-record/index.html new file mode 100644 index 0000000000..5aa83c9e9b --- /dev/null +++ b/packages/noco-docs/dist/records/expand-record/index.html @@ -0,0 +1,17 @@ + + + + + +Expanded record | NocoDB + + + + +
+
Version: Latest

Expanded record

Overview

Expanded record allows you to edit a record data using a form layout. Apart from record information, it also consists of the activity feed such as user comments or record revision history (audit).

expanded record

Expanding a Record

To expand a record in a grid view, click on expand icon that appears on the first column (index column) on hover over a record.

expand record icon

tip

Shortcut : Use space bar on any cell to expand associated record.

Edit record

Expanded form displays all the fields of a record enabled for display in a form layout.

  1. You can edit the record data by clicking on the field and entering the value.
  2. Show hidden fields: Click on Show hidden fields button to display all the fields of a record.
  3. Click on Save button to save the changes. Close the expanded form by clicking on X button in the top right corner of the form to discard the changes.
  4. Navigate to next/previous record using Next/Previous button in the top left corner of the form.
info

Any changes made to the links field (link/unlink) will be saved automatically.

edit record

Record Audit

In an expanded form,

  1. Click on Audit tab
  2. A list of all the changes made to the record will be displayed

expand record activity feed

Record Comment

Add Comment

In an expanded form,

  1. Click on Comments tab
  2. A list of all the comments made to the record will be displayed
  3. Click on input box at the bottom to add a new comment, and press Enter to save

expand record comment

Edit Comment

In comments list of an expanded form,

  1. Click on Edit icon on the right side of the comment
  2. Edit the comment and
  3. Click on Save icon OR Press Enter to save the changes

expand record comment

expand record comment

expand record comment

note

You can only edit your own comments. You cannot delete a comment, but can edit it to remove the content. +Changes to comments are also recorded in the audit log.

Record Actions

Copy Record URL

In an expanded form, click Copy Record URL to share the record form to other authorized users.

Duplicate record

Using context menu (...) in the top right corner of the expanded form, you can duplicate the record. Duplicated record will not be saved by default. You can edit the record and save it.

delete record

Delete record

Using context menu (...) in the top right corner of the expanded form, you can delete the record.

delete record

On the confirmation dialog, click on Delete button to delete the record.

delete record

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/records/records-overview/index.html b/packages/noco-docs/dist/records/records-overview/index.html new file mode 100644 index 0000000000..206fd22671 --- /dev/null +++ b/packages/noco-docs/dist/records/records-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Records overview | NocoDB + + + + +
+
Version: Latest

Records overview

Records in NocoDB are fundamental components within a database, serving as individual entries or data points within a table. Each default table in NocoDB is meticulously organized into a structured grid of records, fields (columns), and cells. These records constitute the backbone of data storage and retrieval within NocoDB, encapsulating a diverse range of information types, including text, numerical values, dates, file attachments, and even links to other records, either within the same table or across different tables. This versatile approach allows users to create highly customizable databases tailored to their specific data management needs, all centered around the concept of records.

In essence, a record can be envisaged as a horizontal collection of data within a NocoDB table, each record representing a distinct piece of information. These records play a pivotal role in organizing, categorizing, and presenting data in a comprehensible and efficient manner, offering users a structured and organized platform for data management.

In this section, we'll explore the various aspects of records in NocoDB, equipping you with the knowledge to effectively manage your own data.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/roles-and-permissions/roles-permissions-overview/index.html b/packages/noco-docs/dist/roles-and-permissions/roles-permissions-overview/index.html new file mode 100644 index 0000000000..00528d1ac3 --- /dev/null +++ b/packages/noco-docs/dist/roles-and-permissions/roles-permissions-overview/index.html @@ -0,0 +1,35 @@ + + + + + +Roles & permissions overview | NocoDB + + + + +
+
Version: Latest

Roles & permissions overview

In NocoDB, we have roles that determine what people can do in a Workspace or Base.

You can give a member one of these roles:

  • Creator
  • Editor
  • Commenter
  • Viewer
info

Role for a member, if assigned at base level carry precedence over workspace level role.

When inviting a user, their role designation is initially assigned but can be modified later. Our role system +operates incrementally, with higher-level roles encompassing all privileges of lower-level roles. +This hierarchy offers flexibility in permissions and fosters a transparent organizational structure +in workspace or base management.

Roles

Roles serve as the basis for user privileges in NocoDB. They are associated with members at two levels: +Workspace and Base. When a member is invited to a Workspace with a specific role, like an "Editor," they +automatically have that role in all Bases within that Workspace. However, project owners or creators can customize +permissions at the project level to align with specific needs. This dual-level role assignment system +ensures adaptable user permissions and access management in NocoDB.

Owner: When a member creates a new Workspace or Base, they automatically become the Workspace or Base "Owner." +\This role grants exclusive privileges, including the authority to delete the Workspace or Base. +The "Owner" role's privileges are non-transferable, ensuring ownership and control integrity.

Creator: The "Creator" role shares all privileges with an "Owner," except for deleting the workspace or base. +"Creators" have full administrative rights, except for deletion authority, which remains exclusive to the "Owner." +This ensures balanced workspace or base management.

Editor: An "Editor" can create and edit records but cannot modify the project schema, +like adding tables or fields. They strike a balance between data input and schema management.

Commenter: The "Commenter" role cannot add or edit records but can provide comments on existing records +, facilitating communication and feedback.

Viewer: "Viewers" can only access records and associated comments, without the ability to contribute +or make changes, ensuring controlled access for informational purposes.

No Access: This role, applied exclusively at the base level, revokes project access for the designated user, +ensuring robust security and access management.

Workspace level permissions

The individual who creates the workspace is automatically designated as a Workspace owner. +A workspace can have only one Owner. Access to bases within that workspace is granted to members based on their roles +within the parent workspace. When a member becomes part of a workspace, the role at the workspace level is +automatically applied to them for all bases in that workspace, unless a specific exception is configured +to override at base level.

TaskOwnerCreatorEditorCommenterViewer
Invite member to workspace✔️✔️
Manage member access to workspace✔️✔️
Remove member access from workspace✔️✔️
View members in workspace✔️✔️
Delete Workspace✔️
Billing & upgrade options✔️
Create a new base✔️✔️✔️✔️✔️
Access existing bases at assigned roles✔️✔️✔️✔️✔️

Base level permissions

Collaboration

TaskOwnerCreatorEditorCommenterViewer
Invite members to base at or below your role✔️✔️
Manage members access to base✔️✔️
Remove member access from a base✔️✔️
View members in a base✔️✔️
Share base✔️✔️
Share view✔️✔️

Table & view operations

TaskOwnerCreatorEditorCommenterViewer
Add / modify / delete table✔️✔️
Add / modify / delete fields✔️✔️
Add / modify / delete views✔️✔️
Hide / un-hide / reorder fields✔️✔️✔️✔️✔️
Add / modify / delete sort✔️✔️✔️✔️✔️
Add / modify / delete filters✔️✔️✔️✔️✔️
Add / modify / delete group-by✔️✔️✔️✔️✔️

Record operations

TaskOwnerCreatorEditorCommenterViewer
Add / modify / delete record✔️✔️
View & add comment on a record✔️✔️✔️✔️
View record✔️✔️✔️✔️✔️

Automations & advanced

TaskOwnerCreatorEditorCommenterViewer
Add / modify / delete Webhook✔️✔️
ERD (Project & Table relations)✔️✔️✔️✔️✔️
API Snippet✔️✔️✔️✔️✔️
API Token✔️✔️✔️✔️✔️
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/search/index.html b/packages/noco-docs/dist/search/index.html new file mode 100644 index 0000000000..284036ad44 --- /dev/null +++ b/packages/noco-docs/dist/search/index.html @@ -0,0 +1,16 @@ + + + + + +Search the documentation | NocoDB + + + + +
+

Search the documentation

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/sitemap.xml b/packages/noco-docs/dist/sitemap.xml new file mode 100644 index 0000000000..e255386b75 --- /dev/null +++ b/packages/noco-docs/dist/sitemap.xml @@ -0,0 +1 @@ +https://nocodb.com/searchweekly0.5https://nocodb.com/0.109.7/weekly0.5https://nocodb.com/0.109.7/developer-resources/accessing-apisweekly0.5https://nocodb.com/0.109.7/developer-resources/rest-apisweekly0.5https://nocodb.com/0.109.7/developer-resources/sdkweekly0.5https://nocodb.com/0.109.7/developer-resources/upload-via-apiweekly0.5https://nocodb.com/0.109.7/developer-resources/webhooksweekly0.5https://nocodb.com/0.109.7/engineering/architectureweekly0.5https://nocodb.com/0.109.7/engineering/builds-and-releasesweekly0.5https://nocodb.com/0.109.7/engineering/development-setupweekly0.5https://nocodb.com/0.109.7/engineering/playwrightweekly0.5https://nocodb.com/0.109.7/engineering/repository-structureweekly0.5https://nocodb.com/0.109.7/engineering/translationweekly0.5https://nocodb.com/0.109.7/engineering/unit-testingweekly0.5https://nocodb.com/0.109.7/FAQsweekly0.5https://nocodb.com/0.109.7/getting-started/demosweekly0.5https://nocodb.com/0.109.7/getting-started/environment-variablesweekly0.5https://nocodb.com/0.109.7/getting-started/installationweekly0.5https://nocodb.com/0.109.7/getting-started/upgradingweekly0.5https://nocodb.com/0.109.7/setup-and-usages/account-settingsweekly0.5https://nocodb.com/0.109.7/setup-and-usages/auditweekly0.5https://nocodb.com/0.109.7/setup-and-usages/code-snippetsweekly0.5https://nocodb.com/0.109.7/setup-and-usages/column-operationsweekly0.5https://nocodb.com/0.109.7/setup-and-usages/column-typesweekly0.5https://nocodb.com/0.109.7/setup-and-usages/dashboardweekly0.5https://nocodb.com/0.109.7/setup-and-usages/display-valueweekly0.5https://nocodb.com/0.109.7/setup-and-usages/expanded-formweekly0.5https://nocodb.com/0.109.7/setup-and-usages/formulasweekly0.5https://nocodb.com/0.109.7/setup-and-usages/import-airtable-to-sql-database-within-a-minute-for-freeweekly0.5https://nocodb.com/0.109.7/setup-and-usages/keyboard-maneuverweekly0.5https://nocodb.com/0.109.7/setup-and-usages/languagesweekly0.5https://nocodb.com/0.109.7/setup-and-usages/link-to-another-recordweekly0.5https://nocodb.com/0.109.7/setup-and-usages/linksweekly0.5https://nocodb.com/0.109.7/setup-and-usages/lookupweekly0.5https://nocodb.com/0.109.7/setup-and-usages/meta-managementweekly0.5https://nocodb.com/0.109.7/setup-and-usages/primary-keyweekly0.5https://nocodb.com/0.109.7/setup-and-usages/project-settingsweekly0.5https://nocodb.com/0.109.7/setup-and-usages/rollupweekly0.5https://nocodb.com/0.109.7/setup-and-usages/share-baseweekly0.5https://nocodb.com/0.109.7/setup-and-usages/share-viewweekly0.5https://nocodb.com/0.109.7/setup-and-usages/sync-schemaweekly0.5https://nocodb.com/0.109.7/setup-and-usages/table-operationsweekly0.5https://nocodb.com/0.109.7/setup-and-usages/team-and-authweekly0.5https://nocodb.com/0.109.7/setup-and-usages/usage-informationweekly0.5https://nocodb.com/0.109.7/setup-and-usages/viewsweekly0.5https://nocodb.com/weekly0.5https://nocodb.com/account-settings/api-tokensweekly0.5https://nocodb.com/account-settings/oss-specific-detailsweekly0.5https://nocodb.com/account-settings/profile-pageweekly0.5https://nocodb.com/automation/webhook/actions-on-webhookweekly0.5https://nocodb.com/automation/webhook/create-webhookweekly0.5https://nocodb.com/automation/webhook/webhook-overviewweekly0.5https://nocodb.com/bases/actions-on-baseweekly0.5https://nocodb.com/bases/base-collaborationweekly0.5https://nocodb.com/bases/base-overviewweekly0.5https://nocodb.com/bases/create-baseweekly0.5https://nocodb.com/bases/import-base-from-airtableweekly0.5https://nocodb.com/bases/share-baseweekly0.5https://nocodb.com/collaboration/base-collaborationweekly0.5https://nocodb.com/collaboration/collaboration-overviewweekly0.5https://nocodb.com/collaboration/oss-specific-detailsweekly0.5https://nocodb.com/collaboration/share-baseweekly0.5https://nocodb.com/collaboration/share-viewweekly0.5https://nocodb.com/collaboration/workspace-collaborationweekly0.5https://nocodb.com/data-sources/actions-on-data-sourcesweekly0.5https://nocodb.com/data-sources/connect-to-data-sourceweekly0.5https://nocodb.com/data-sources/data-source-overviewweekly0.5https://nocodb.com/data-sources/sync-with-data-sourceweekly0.5https://nocodb.com/engineering/architectureweekly0.5https://nocodb.com/engineering/builds-and-releasesweekly0.5https://nocodb.com/engineering/development-setupweekly0.5https://nocodb.com/engineering/playwrightweekly0.5https://nocodb.com/engineering/repository-structureweekly0.5https://nocodb.com/engineering/translationweekly0.5https://nocodb.com/engineering/unit-testingweekly0.5https://nocodb.com/engineering/writing-docsweekly0.5https://nocodb.com/FAQsweekly0.5https://nocodb.com/fields/actions-on-fieldweekly0.5https://nocodb.com/fields/display-valueweekly0.5https://nocodb.com/fields/field-types/custom-types/attachmentweekly0.5https://nocodb.com/fields/field-types/custom-types/barcodeweekly0.5https://nocodb.com/fields/field-types/custom-types/geometryweekly0.5https://nocodb.com/fields/field-types/custom-types/jsonweekly0.5https://nocodb.com/fields/field-types/custom-types/QR-codeweekly0.5https://nocodb.com/fields/field-types/custom-types/specific-db-typeweekly0.5https://nocodb.com/fields/field-types/date-time-based/dateweekly0.5https://nocodb.com/fields/field-types/date-time-based/date-timeweekly0.5https://nocodb.com/fields/field-types/date-time-based/durationweekly0.5https://nocodb.com/fields/field-types/date-time-based/timeweekly0.5https://nocodb.com/fields/field-types/formula/conditional-expressionsweekly0.5https://nocodb.com/fields/field-types/formula/date-functionsweekly0.5https://nocodb.com/fields/field-types/formula/formulaweekly0.5https://nocodb.com/fields/field-types/formula/numeric-functionsweekly0.5https://nocodb.com/fields/field-types/formula/operatorsweekly0.5https://nocodb.com/fields/field-types/formula/string-functionsweekly0.5https://nocodb.com/fields/field-types/links-based/linksweekly0.5https://nocodb.com/fields/field-types/links-based/lookupweekly0.5https://nocodb.com/fields/field-types/links-based/rollupweekly0.5https://nocodb.com/fields/field-types/numerical/currencyweekly0.5https://nocodb.com/fields/field-types/numerical/decimalweekly0.5https://nocodb.com/fields/field-types/numerical/numberweekly0.5https://nocodb.com/fields/field-types/numerical/percentweekly0.5https://nocodb.com/fields/field-types/select-based/checkboxweekly0.5https://nocodb.com/fields/field-types/select-based/multi-selectweekly0.5https://nocodb.com/fields/field-types/select-based/ratingweekly0.5https://nocodb.com/fields/field-types/select-based/single-selectweekly0.5https://nocodb.com/fields/field-types/text-based/emailweekly0.5https://nocodb.com/fields/field-types/text-based/long-textweekly0.5https://nocodb.com/fields/field-types/text-based/phonenumberweekly0.5https://nocodb.com/fields/field-types/text-based/single-line-textweekly0.5https://nocodb.com/fields/field-types/text-based/urlweekly0.5https://nocodb.com/fields/fields-overviewweekly0.5https://nocodb.com/fields/multi-fields-editorweekly0.5https://nocodb.com/fields/primary-keyweekly0.5https://nocodb.com/getting-started/keyboard-shortcutsweekly0.5https://nocodb.com/getting-started/quick-startweekly0.5https://nocodb.com/getting-started/self-hosted/environment-variablesweekly0.5https://nocodb.com/getting-started/self-hosted/installationweekly0.5https://nocodb.com/getting-started/self-hosted/upgradingweekly0.5https://nocodb.com/getting-started/terminologiesweekly0.5https://nocodb.com/records/actions-on-recordweekly0.5https://nocodb.com/records/create-recordweekly0.5https://nocodb.com/records/expand-recordweekly0.5https://nocodb.com/records/records-overviewweekly0.5https://nocodb.com/roles-and-permissions/roles-permissions-overviewweekly0.5https://nocodb.com/table-details/table-details-overviewweekly0.5https://nocodb.com/table-operations/downloadweekly0.5https://nocodb.com/table-operations/field-operationsweekly0.5https://nocodb.com/table-operations/filterweekly0.5https://nocodb.com/table-operations/group-byweekly0.5https://nocodb.com/table-operations/overviewweekly0.5https://nocodb.com/table-operations/row-heightweekly0.5https://nocodb.com/table-operations/searchweekly0.5https://nocodb.com/table-operations/sortweekly0.5https://nocodb.com/tables/actions-on-tableweekly0.5https://nocodb.com/tables/create-tableweekly0.5https://nocodb.com/tables/create-table-via-importweekly0.5https://nocodb.com/tables/import-data-into-existing-tableweekly0.5https://nocodb.com/tables/table-overviewweekly0.5https://nocodb.com/views/actions-on-viewweekly0.5https://nocodb.com/views/create-viewweekly0.5https://nocodb.com/views/share-viewweekly0.5https://nocodb.com/views/view-types/formweekly0.5https://nocodb.com/views/view-types/galleryweekly0.5https://nocodb.com/views/view-types/gridweekly0.5https://nocodb.com/views/view-types/kanbanweekly0.5https://nocodb.com/views/views-overviewweekly0.5https://nocodb.com/workspaces/actions-on-workspaceweekly0.5https://nocodb.com/workspaces/create-workspaceweekly0.5https://nocodb.com/workspaces/workspace-collaborationweekly0.5https://nocodb.com/workspaces/workspace-overviewweekly0.5 \ No newline at end of file diff --git a/packages/noco-docs/dist/table-details/table-details-overview/index.html b/packages/noco-docs/dist/table-details/table-details-overview/index.html new file mode 100644 index 0000000000..513001f102 --- /dev/null +++ b/packages/noco-docs/dist/table-details/table-details-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Table details overview | NocoDB + + + + +
+
Version: Latest

Table details overview

Table Details section houses various tools & utilities to manage & work with your table schema & data. This essentially is a place for 'Creators' to build & manage their tables quickly. Details section is accessible using the Data-Details toggle switcher in the top navbar.

image

This section is divided into 4 parts:

Fields

Fields is a multi-field table schema editor that allows you to add, edit, delete and reorder fields quickly & easily from one place. Additional details about multi-field editor can be found here

image

Relations

Relations are vital for managing data connections in a database. In a complex schema, it's essential to have a clear understanding of these connections because they:

  1. Maintain data accuracy.
  2. Enhance query efficiency.
  3. Aid in logical schema design.
  4. Support data analysis.
  5. Enable proper application development.

Visualizing these relations through an Entity Relationship Diagram (ERD) simplifies their comprehension and management, especially as the database grows in complexity.

image

note

You can drag drop the tables to rearrange them in the diagram. Note that, such reordering will not persist across sessions.

API Snippet

NocoDB provides programmatic access to your data via REST APIs. API snippets in NocoDB offer ready-made code examples in various programming languages, simplifying the process of integrating your data with external applications. These snippets save time and effort by providing a quick and easy reference for developers, enabling them to interact with your NocoDB database programmatically without the need to write code from scratch.

A quick snippet for different scripts & languages is listed in this section.

image

Sample snippets

curl --request GET \
--url 'http://localhost:8080/api/v1/db/data/noco/p18h72lcfwzpsvu/Customer/views/Customer?offset=0&limit=25&where=' \
--header 'xc-auth: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InVzZXJAbm9jb2RiLmNvbSIsImRpc3BsYXlfbmFtZSI6IlJpY2hhcmQiLCJhdmF0YXIiOm51bGwsInVzZXJfbmFtZSI6bnVsbCwiaWQiOiJ1c3ExbGNpeWp4ejh5bzY4Iiwicm9sZXMiOnsib3JnLWxldmVsLXZpZXdlciI6dHJ1ZX0sInRva2VuX3ZlcnNpb24iOiI0ZjUyOTUxZGQwOTZmMTVjMTY0Y2U5MDM1OTk1YzlmMDE1MTJjMGNjOThkYmRiMDU2ZmFhM2JhZWE1OWY4Y2QzMTcyN2FjOWZkMTJjNDA2ZiIsImlhdCI6MTY5NTk5MTg0NywiZXhwIjoxNjk2MDI3ODQ3fQ.I7P5caoiDSO4j_3D032XxWxxXwyEju6pL5y3Mnu_MNU'

Supported Snippet

Shell

  • cURL
  • wget

Javascript

  • Axios
  • Fetch
  • jQuery
  • XHR

Node

  • Axios
  • Fetch
  • Request
  • Native
  • Unirest

NocoDB SDK

  • Javascript
  • Node

PHP

Python

  • http.client
  • request

Ruby

Java

C

Webhook

Webhooks are essential for real-time communication and automation between NocoDB and external systems. They serve several crucial purposes:

  1. Instant Notifications: Webhooks enable immediate notifications when there are changes in your NocoDB database. This real-time information can be crucial for timely responses to important events, such as new data entries, updates, or deletions.

  2. Automation: They facilitate the automation of processes by triggering actions in external systems based on database events. For example, you can automate tasks like sending emails, updating spreadsheets, or syncing data with other applications in response to changes in NocoDB.

  3. Integration: Webhooks allow you to seamlessly integrate NocoDB with other tools and services, enhancing the overall functionality of your database. This integration can streamline workflows, improve data consistency, and reduce manual data entry.

  4. Bulk Operations: NocoDB's support for webhooks in bulk endpoints makes it efficient to handle multiple records simultaneously. This is especially useful when dealing with large datasets or when you need to perform batch operations in external systems.

In summary, webhooks in NocoDB empower you to create dynamic, responsive, and interconnected workflows by keeping external systems in sync with your database's activities.

image

Note that, Webhooks currently are specific for associated table. Additional procedural details about webhooks can be found here

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/download/index.html b/packages/noco-docs/dist/table-operations/download/index.html new file mode 100644 index 0000000000..8f3d6663d2 --- /dev/null +++ b/packages/noco-docs/dist/table-operations/download/index.html @@ -0,0 +1,16 @@ + + + + + +Download | NocoDB + + + + +
+
Version: Latest

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

Download Data

To export data from NocoDB, follow these steps:

  1. Click on the ... button in the toolbar menu.
  2. Choose the Download option.
  3. Select the desired file format from the dropdown menu.

Export

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/field-operations/index.html b/packages/noco-docs/dist/table-operations/field-operations/index.html new file mode 100644 index 0000000000..5fbe20f43d --- /dev/null +++ b/packages/noco-docs/dist/table-operations/field-operations/index.html @@ -0,0 +1,16 @@ + + + + + +Hide & reorder fields | NocoDB + + + + +
+
Version: Latest

Hide & reorder fields

Utilize the Fields button in the toolbar to manage the visibility of fields within the system. By default, all system-related fields are concealed, but you have the option to enable them by selecting Show system fields.

info

For Gallery View & Kanban View, the Fields menu is available on the toolbar as Edit Cards.

Show system fields

Rearranging Fields

You have the flexibility to rearrange field positions. Access the Fields menu and reorder fields effortlessly by dragging and dropping the associated field using the provided drag icon.

Reorder Fields

Show/Hide Fields

For showing or hiding fields, navigate to the Fields menu and simply click the toggle button associated with the respective field to hide or un-hide it.

tip

Consider creating different grid views with distinct sets of fields displayed in each view for enhanced customization.

Show/Hide Fields

Change cover field (Gallery/Kanban View)

For Gallery View & Kanban View, you can change the cover field by clicking on the Change cover field button in the Edit Cards menu. You can select any field of type Attachment as the cover field.

Change cover field

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/filter/index.html b/packages/noco-docs/dist/table-operations/filter/index.html new file mode 100644 index 0000000000..175e7d27a1 --- /dev/null +++ b/packages/noco-docs/dist/table-operations/filter/index.html @@ -0,0 +1,16 @@ + + + + + +Filtering records | NocoDB + + + + +
+
Version: Latest

Filtering records

Filters provide a powerful way to narrow down and organize your data according to your specific requirements. NocoDB supports nested filters, allowing you to select multiple fields and conditions for filtering. You can choose between and or or mode of operation to combine filters, and filtering also supports Lookup, Formula, and Nested Data.

Adding or Editing Filters

To add or edit a filter, simply click the Filter button in the toolbar and select either Add filter or Add filter group.

Add Filter

Configure the filter by specifying the Field, Operation, and Value (if applicable).

Filter Configuration

You can combine multiple filter conditions using either And or Or mode of operation.

Nested Filters

Deleting Filters

To remove a filter, click on the bin icon located to the right of the respective filter.

Delete Filter

Grouping Filters

You also have the option to group multiple filters together using a Filter Group.

Grouped Filters

Enabling NULL and EMPTY Filters

By default, NULL filters (is null & is not null) and EMPTY filters (is empty & is not empty) are hidden. If you wish to filter out either of these explicitly, you can enable Show NULL and EMPTY Filter in Project settings.

Before enabling Show NULL and EMPTY Filter:

Show isBlank

Once enabled, you can use the is null & is empty filters to filter out cells with NULL or EMPTY values.

Show NULL and EMPTY Filter

Alternatively, you can use Blank filters to filter out cells with NULL or EMPTY values.

Supported Filters

NocoDB currently supports various types of filters for corresponding fields. Please refer to the matrix below for detailed information.

Filter Matrix

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/group-by/index.html b/packages/noco-docs/dist/table-operations/group-by/index.html new file mode 100644 index 0000000000..d675c4bdeb --- /dev/null +++ b/packages/noco-docs/dist/table-operations/group-by/index.html @@ -0,0 +1,16 @@ + + + + + +Grouping records | NocoDB + + + + +
+
Version: Latest

Grouping records

Grouping records in NocoDB allows for efficient categorization of data into specific Groups and Subgroups. NocoDB supports three levels of record segregation, providing a powerful organizational tool.

Group By

Adding or Editing Groups

To create or modify a grouping in NocoDB, follow these steps:

  1. Click on Group By in the toolbar.
  2. Choose the field by which you want to group the records.
  3. Optionally, you can sort the groups in ascending or descending order.

Group By

info

You can add subgroups with up to three levels to further refine your categorization.

Group By

Deleting Groups

To remove a grouping in NocoDB, take these actions:

  1. Click on Group By in the toolbar.
  2. Locate the bin icon to the right of the group you wish to delete and click on it.
info

To disable Group By and return to the standard spreadsheet grid view, you must remove all configured groups.

Group By

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/overview/index.html b/packages/noco-docs/dist/table-operations/overview/index.html new file mode 100644 index 0000000000..2f77df8eca --- /dev/null +++ b/packages/noco-docs/dist/table-operations/overview/index.html @@ -0,0 +1,16 @@ + + + + + +Table operations overview | NocoDB + + + + + + + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/row-height/index.html b/packages/noco-docs/dist/table-operations/row-height/index.html new file mode 100644 index 0000000000..1922fcc021 --- /dev/null +++ b/packages/noco-docs/dist/table-operations/row-height/index.html @@ -0,0 +1,16 @@ + + + + + +Record height | NocoDB + + + + +
+
Version: Latest

Record height

NocoDB offers users the flexibility to adjust the display height of records within the spreadsheet grid to four distinct levels: Short (the default setting), Medium, Tall, and Extra. This feature proves valuable when working with extensive text fields and multi-select fields, as it enables users to present a greater amount of content within each cell.

record height

Short

Short

Medium

Medium

Tall

Tall

Extra

Extra

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/search/index.html b/packages/noco-docs/dist/table-operations/search/index.html new file mode 100644 index 0000000000..258e052df8 --- /dev/null +++ b/packages/noco-docs/dist/table-operations/search/index.html @@ -0,0 +1,16 @@ + + + + + +Search | NocoDB + + + + +
+
Version: Latest

Search

NocoDB offers a quick search feature that allows you to search for records by field from the toolbar menu. This feature is useful when working with large datasets and can be used in conjunction with the Filter feature to further refine your search results.

  1. Click on the Search button in the toolbar menu (Optional)
  2. Choose the Field to search by (Optional)
  3. Enter the search term in the search bar.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/table-operations/sort/index.html b/packages/noco-docs/dist/table-operations/sort/index.html new file mode 100644 index 0000000000..dca86e59a7 --- /dev/null +++ b/packages/noco-docs/dist/table-operations/sort/index.html @@ -0,0 +1,16 @@ + + + + + +Sorting records | NocoDB + + + + +
+
Version: Latest

Sorting records

Sorting enables you to arrange your data alphabetically (A → Z) or (Z → A) for text based types and in ascending or descending order for numerical types. NocoDB supports nested sorting, allowing you to select fields and the order in which to apply nested sorting.

Adding or Editing Sort

  1. Click the Sort button in the toolbar menu.
  2. Choose the Field to sort by.
  3. Configure the sorting Direction : ascending or descending

Sort Field

Sort Direction

  • You can configure multiple fields for subsequent-level sorting.

Nested Sorting

info

Field configured at the top will be used for the first-level sorting, followed by subsequent fields in a top-down order

Deleting Sort

  • Click the Sort button in the toolbar.
    • Click on the bin icon to the right of the sort you wish to delete.

Delete Sorting

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tables/actions-on-table/index.html b/packages/noco-docs/dist/tables/actions-on-table/index.html new file mode 100644 index 0000000000..92a09d5578 --- /dev/null +++ b/packages/noco-docs/dist/tables/actions-on-table/index.html @@ -0,0 +1,18 @@ + + + + + +Actions on table | NocoDB + + + + +
+
Version: Latest

Actions on table

Rename table

  1. Access the contextual menu for the table by clicking on the ellipsis symbol (...) located in the left sidebar.
  2. Click on the Rename option from the context menu.
  3. Enter the desired new table name into the provided field.
  4. To finalize the renaming process, click on the Rename button.

image

image

Change table icon

  1. Click on the existing table icon to the left of the table name in the left sidebar.
  2. Select the desired icon from the list of available options.

image

Duplicate table

  1. Access the contextual menu for the table by clicking on the ellipsis symbol (...) located in the left sidebar.
  2. Click on the Duplicate option from the context menu.
  3. For additional customization (Optional) +a) Under Include data, you have the flexibility to choose whether to replicate the table with or without its data. +b) Regarding Include views you can select whether to duplicate the table with or without its associated views.
  4. Proceed by clicking the Duplicate Table button found in the confirmation dialog.

A new table will be generated, mirroring the original table's schema and content, in accordance with the configurations specified in step 3.

image

image

info
  • Duplicate table will be created in the same base as the original table
  • Duplicate table will carry suffix Copy in its name.
  • Duplicate table option is not available for External DB projects

Delete table

danger

This action cannot be undone.

  1. Access the contextual menu for the table by clicking on the ellipsis symbol (...) located in the left sidebar.
  2. Click on the Delete option from the context menu.
  3. To finalize the deletion process, click on the Delete button in the confirmation dialog.

image

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tables/create-table-via-import/index.html b/packages/noco-docs/dist/tables/create-table-via-import/index.html new file mode 100644 index 0000000000..a0bfa84ab5 --- /dev/null +++ b/packages/noco-docs/dist/tables/create-table-via-import/index.html @@ -0,0 +1,18 @@ + + + + + +Create table via import | NocoDB + + + + +
+
Version: Latest

Create table via import

Import table from CSV / Excel / JSON

Accessing import modal

There are two ways to access import modal:

1. From the base dashboard

import data

import from dashboard

2. From the base context menu

import from sidebar

Importing file

There are two ways to upload source file:

1. Upload from local directory

  1. Select Upload tab from the Quick import modal.
  2. Click on file upload button or drag and drop file to the modal.
  3. Advance Settings (optional)
  4. Click on Import button. +image

2. Upload from URL

  1. Select URL tab from the Quick import modal.
  2. Paste the URL of the file.
  3. Advance Settings (optional)
  4. Click on Import button. +image
info
  • Multiple files can be imported at once.
  • Supported file formats: CSV, Excel, JSON
  • Maximum file size: 5 MB

Import configurations

  1. Table name - defaults to the name of the file; double click to edit (Optional).
  2. Field configurations (Optional)
    • Field name - name of the field as identified from import file header; click to edit.
    • Field type - inferred from the data in the field; click to edit.
    • Options - For Single select and Multi select field types, options identified are listed here; click to edit.
  3. Remove field - Click on delete icon to exclude a field in source file from being imported (Optional)
  4. Click on Import button to start importing the file.

image

Advanced Settings

  • Number of Records for Datatype Inference: Default value is set to 500 records.
  • Automatic Field Type Detection: Enabled by default. If selected, the system will automatically detect field types. Otherwise, all fields will default to "SingleLineText."
  • Utilize First Records as Headers: Enabled by default. If selected, the first record in the spreadsheet will be treated as the header record and its contents will be used as field names.
  • Import Data: Enabled by default. If selected, all data will be imported; otherwise, only the table will be created.
info

By default, the first field will be chosen as Display Value and cannot be deleted.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tables/create-table/index.html b/packages/noco-docs/dist/tables/create-table/index.html new file mode 100644 index 0000000000..4b26848b87 --- /dev/null +++ b/packages/noco-docs/dist/tables/create-table/index.html @@ -0,0 +1,17 @@ + + + + + +Create empty table | NocoDB + + + + + + + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tables/import-data-into-existing-table/index.html b/packages/noco-docs/dist/tables/import-data-into-existing-table/index.html new file mode 100644 index 0000000000..786e91416f --- /dev/null +++ b/packages/noco-docs/dist/tables/import-data-into-existing-table/index.html @@ -0,0 +1,16 @@ + + + + + +Import data into an existing table | NocoDB + + + + +
+
Version: Latest

Import data into an existing table

Import data from CSV / Excel

Accessing import modal

  1. Click on ... context menu from the toolbar.
  2. Click on Upload button.
  3. Select Upload CSV / Upload Excel option.

image

Importing file data

There are two ways to upload source file:

1. Upload from local directory

  1. Select Upload tab from the Quick import modal.
  2. Click on file upload button or drag and drop file to the modal.
  3. Advance Settings (optional)
  4. Click on Import button.

image

2. Upload from URL

  1. Select URL tab from the Quick import modal.
  2. Paste the URL of the file.
  3. Advance Settings (optional)
  4. Click on Import button.

image

Field mapping

  1. Table Name (Optional)

    • Defaults to the name of the file; double-click to edit.
  2. Mapping Fields (Optional)

    • Existing field names are listed under Source field, while new fields identified from the import file are listed under Destination field.
    • NocoDB automatically maps destination field names based on the source field names.
    • You can reconfigure the mapping by utilizing the dropdown menu that appears when you click on the destination field.
  3. Exclude fields (Optional)

    • A checkbox is provided to exclude a field from being imported.
  4. Initiate Import

    • Click on the Import button to commence the file import process.

image

Advance settings

  • # of records to parse to infer datatype - defaults to 500 records.
  • Utilize First Record as Headers**`: Enabled by default. If selected, the first record in the spreadsheet will be treated as the header record and its contents will be used as field names.
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tables/table-overview/index.html b/packages/noco-docs/dist/tables/table-overview/index.html new file mode 100644 index 0000000000..b99e6476e3 --- /dev/null +++ b/packages/noco-docs/dist/tables/table-overview/index.html @@ -0,0 +1,16 @@ + + + + + +Table overview | NocoDB + + + + +
+
Version: Latest

Table overview

A base is housed in tables, where data is logically arranged into records and fields. A table in NocoDB serves as a robust center for managing your data effectively. You have the flexibility to create multiple tables, each catering to distinct sets of data. Moreover, you can link tables to one another to establish relationships between them.

Much like traditional spreadsheets, NocoDB tables empower you to carry out tasks such as sorting, filtering, and aggregating your data. What sets NocoDB apart from standard spreadsheets is its ability to present table data in various formats. You can view your data as a conventional grid with records and fields, a gallery of cards, or even as interactive kanban boards, and then make use of a friendly form to input data.

As you delve into this section, you'll gain a deeper understanding of how to leverage NocoDB's tables effectively, equipping you to proficiently organize your own dataset.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/account-settings/index.html b/packages/noco-docs/dist/tags/account-settings/index.html new file mode 100644 index 0000000000..375a31f659 --- /dev/null +++ b/packages/noco-docs/dist/tags/account-settings/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "Account Settings" | NocoDB + + + + +
+

3 docs tagged with "Account Settings"

View All Tags

API tokens

This article explains how to create and work with API Tokens.

In Open Source

This article explains Account settings specifics in Open source NocoDB.

Profile page

This article explains how to manage your profile page.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/api-tokens/index.html b/packages/noco-docs/dist/tags/api-tokens/index.html new file mode 100644 index 0000000000..8897690181 --- /dev/null +++ b/packages/noco-docs/dist/tags/api-tokens/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Api Tokens" | NocoDB + + + + +
+

One doc tagged with "Api Tokens"

View All Tags

API tokens

This article explains how to create and work with API Tokens.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/attachment/index.html b/packages/noco-docs/dist/tags/attachment/index.html new file mode 100644 index 0000000000..aa1790fcdd --- /dev/null +++ b/packages/noco-docs/dist/tags/attachment/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Attachment" | NocoDB + + + + +
+

One doc tagged with "Attachment"

View All Tags

Attachment

This article explains how to create & work with an Attachment field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/audit/index.html b/packages/noco-docs/dist/tags/audit/index.html new file mode 100644 index 0000000000..858612177f --- /dev/null +++ b/packages/noco-docs/dist/tags/audit/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Audit" | NocoDB + + + + +
+

2 docs tagged with "Audit"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/barcode/index.html b/packages/noco-docs/dist/tags/barcode/index.html new file mode 100644 index 0000000000..8d565676a0 --- /dev/null +++ b/packages/noco-docs/dist/tags/barcode/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Barcode" | NocoDB + + + + +
+

One doc tagged with "Barcode"

View All Tags

Barcode

This article explains how to create & work with a Barcode field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/bases/index.html b/packages/noco-docs/dist/tags/bases/index.html new file mode 100644 index 0000000000..fdc6179302 --- /dev/null +++ b/packages/noco-docs/dist/tags/bases/index.html @@ -0,0 +1,16 @@ + + + + + +9 docs tagged with "Bases" | NocoDB + + + + +
+

9 docs tagged with "Bases"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

Base overview

This article explains the concept of bases in NocoDB.

Share base

Procedures to share a base & generating embedded iframe

Share base

Procedures to share a base publicly & generating embedded iframe

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/checkbox/index.html b/packages/noco-docs/dist/tags/checkbox/index.html new file mode 100644 index 0000000000..8b30da8cbf --- /dev/null +++ b/packages/noco-docs/dist/tags/checkbox/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Checkbox" | NocoDB + + + + +
+

One doc tagged with "Checkbox"

View All Tags

Checkbox

This article explains how to create & work with a Checkbox field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/collaboration/index.html b/packages/noco-docs/dist/tags/collaboration/index.html new file mode 100644 index 0000000000..a7745c33d0 --- /dev/null +++ b/packages/noco-docs/dist/tags/collaboration/index.html @@ -0,0 +1,16 @@ + + + + + +8 docs tagged with "Collaboration" | NocoDB + + + + +
+

8 docs tagged with "Collaboration"

View All Tags

In Open Source

This article explains specifics of User management in OSS.

Share base

Procedures to share a base & generating embedded iframe

Share base

Procedures to share a base publicly & generating embedded iframe

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/comments/index.html b/packages/noco-docs/dist/tags/comments/index.html new file mode 100644 index 0000000000..c01e547f03 --- /dev/null +++ b/packages/noco-docs/dist/tags/comments/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Comments" | NocoDB + + + + +
+

One doc tagged with "Comments"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/connect/index.html b/packages/noco-docs/dist/tags/connect/index.html new file mode 100644 index 0000000000..f418c3c49d --- /dev/null +++ b/packages/noco-docs/dist/tags/connect/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Connect" | NocoDB + + + + +
+

One doc tagged with "Connect"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/cover-image/index.html b/packages/noco-docs/dist/tags/cover-image/index.html new file mode 100644 index 0000000000..205d132165 --- /dev/null +++ b/packages/noco-docs/dist/tags/cover-image/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Cover image" | NocoDB + + + + +
+

One doc tagged with "Cover image"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/create/index.html b/packages/noco-docs/dist/tags/create/index.html new file mode 100644 index 0000000000..47258104b0 --- /dev/null +++ b/packages/noco-docs/dist/tags/create/index.html @@ -0,0 +1,16 @@ + + + + + +6 docs tagged with "Create" | NocoDB + + + + +
+

6 docs tagged with "Create"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/csv/index.html b/packages/noco-docs/dist/tags/csv/index.html new file mode 100644 index 0000000000..9bf836aaa0 --- /dev/null +++ b/packages/noco-docs/dist/tags/csv/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "CSV" | NocoDB + + + + +
+

3 docs tagged with "CSV"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/currency/index.html b/packages/noco-docs/dist/tags/currency/index.html new file mode 100644 index 0000000000..0b55ae1e27 --- /dev/null +++ b/packages/noco-docs/dist/tags/currency/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Currency" | NocoDB + + + + +
+

One doc tagged with "Currency"

View All Tags

Currency

This article explains how to create & work with a Currency field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/custom-types/index.html b/packages/noco-docs/dist/tags/custom-types/index.html new file mode 100644 index 0000000000..5f392a9c50 --- /dev/null +++ b/packages/noco-docs/dist/tags/custom-types/index.html @@ -0,0 +1,16 @@ + + + + + +8 docs tagged with "Custom types" | NocoDB + + + + +
+

8 docs tagged with "Custom types"

View All Tags

Attachment

This article explains how to create & work with an Attachment field.

Barcode

This article explains how to create & work with a Barcode field.

Checkbox

This article explains how to create & work with a Checkbox field.

Geometry

This article explains how to create & work with a Geometry field.

JSON

JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.

QR code

This article explains how to create & work with a QR code field.

Rating

This article explains how to create & work with a Rating field.

Specific DB type

This article explains how to create & work with a Specific DB Type field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/dashboard/index.html b/packages/noco-docs/dist/tags/dashboard/index.html new file mode 100644 index 0000000000..98974702cc --- /dev/null +++ b/packages/noco-docs/dist/tags/dashboard/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Dashboard" | NocoDB + + + + +
+

One doc tagged with "Dashboard"

View All Tags

Base overview

This article explains the concept of bases in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/data-sources/index.html b/packages/noco-docs/dist/tags/data-sources/index.html new file mode 100644 index 0000000000..93e4d92d14 --- /dev/null +++ b/packages/noco-docs/dist/tags/data-sources/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "Data sources" | NocoDB + + + + +
+

4 docs tagged with "Data sources"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/date-time/index.html b/packages/noco-docs/dist/tags/date-time/index.html new file mode 100644 index 0000000000..377933c212 --- /dev/null +++ b/packages/noco-docs/dist/tags/date-time/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Date & Time" | NocoDB + + + + +
+

5 docs tagged with "Date & Time"

View All Tags

Date

This article explains how to create & work with a Date field.

Date functions

This article explains various date functions that can be used in formula fields.

Date Time

This article explains how to create & work with a Date Time field.

Duration

This article explains how to create & work with a Duration field.

Time

This article explains how to create & work with a Time field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/decimal/index.html b/packages/noco-docs/dist/tags/decimal/index.html new file mode 100644 index 0000000000..d667f3c164 --- /dev/null +++ b/packages/noco-docs/dist/tags/decimal/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Decimal" | NocoDB + + + + +
+

One doc tagged with "Decimal"

View All Tags

Decimal

This article explains how to create & work with a Decimal field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/delete/index.html b/packages/noco-docs/dist/tags/delete/index.html new file mode 100644 index 0000000000..d87dd18fef --- /dev/null +++ b/packages/noco-docs/dist/tags/delete/index.html @@ -0,0 +1,16 @@ + + + + + +7 docs tagged with "Delete" | NocoDB + + + + +
+

7 docs tagged with "Delete"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

Actions on record

Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/disable/index.html b/packages/noco-docs/dist/tags/disable/index.html new file mode 100644 index 0000000000..67d9261ba9 --- /dev/null +++ b/packages/noco-docs/dist/tags/disable/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Disable" | NocoDB + + + + +
+

One doc tagged with "Disable"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/display-value/index.html b/packages/noco-docs/dist/tags/display-value/index.html new file mode 100644 index 0000000000..11bf67157b --- /dev/null +++ b/packages/noco-docs/dist/tags/display-value/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Display value" | NocoDB + + + + +
+

2 docs tagged with "Display value"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

Display value

This article explains how to set display value for a table & its use.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/download/index.html b/packages/noco-docs/dist/tags/download/index.html new file mode 100644 index 0000000000..451a65c578 --- /dev/null +++ b/packages/noco-docs/dist/tags/download/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Download" | NocoDB + + + + +
+

One doc tagged with "Download"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/duplicate/index.html b/packages/noco-docs/dist/tags/duplicate/index.html new file mode 100644 index 0000000000..7b28d7e7a8 --- /dev/null +++ b/packages/noco-docs/dist/tags/duplicate/index.html @@ -0,0 +1,16 @@ + + + + + +6 docs tagged with "Duplicate" | NocoDB + + + + +
+

6 docs tagged with "Duplicate"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

Actions on record

Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/edit/index.html b/packages/noco-docs/dist/tags/edit/index.html new file mode 100644 index 0000000000..a592973b1c --- /dev/null +++ b/packages/noco-docs/dist/tags/edit/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Edit" | NocoDB + + + + +
+

2 docs tagged with "Edit"

View All Tags

Actions on record

Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/email/index.html b/packages/noco-docs/dist/tags/email/index.html new file mode 100644 index 0000000000..dc596d80b2 --- /dev/null +++ b/packages/noco-docs/dist/tags/email/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Email" | NocoDB + + + + +
+

One doc tagged with "Email"

View All Tags

Email

This article explains how to create & work with an Email field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/enable/index.html b/packages/noco-docs/dist/tags/enable/index.html new file mode 100644 index 0000000000..56d86d5591 --- /dev/null +++ b/packages/noco-docs/dist/tags/enable/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Enable" | NocoDB + + + + +
+

One doc tagged with "Enable"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/engineering/index.html b/packages/noco-docs/dist/tags/engineering/index.html new file mode 100644 index 0000000000..559bc0d256 --- /dev/null +++ b/packages/noco-docs/dist/tags/engineering/index.html @@ -0,0 +1,16 @@ + + + + + +8 docs tagged with "Engineering" | NocoDB + + + + +
+

8 docs tagged with "Engineering"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/excel/index.html b/packages/noco-docs/dist/tags/excel/index.html new file mode 100644 index 0000000000..fe64859c53 --- /dev/null +++ b/packages/noco-docs/dist/tags/excel/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "Excel" | NocoDB + + + + +
+

3 docs tagged with "Excel"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/expanded-record/index.html b/packages/noco-docs/dist/tags/expanded-record/index.html new file mode 100644 index 0000000000..9f3ff8dbd6 --- /dev/null +++ b/packages/noco-docs/dist/tags/expanded-record/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Expanded record" | NocoDB + + + + +
+

One doc tagged with "Expanded record"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/external/index.html b/packages/noco-docs/dist/tags/external/index.html new file mode 100644 index 0000000000..f2f41b7401 --- /dev/null +++ b/packages/noco-docs/dist/tags/external/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "External" | NocoDB + + + + +
+

2 docs tagged with "External"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/field-types/index.html b/packages/noco-docs/dist/tags/field-types/index.html new file mode 100644 index 0000000000..adf6abde11 --- /dev/null +++ b/packages/noco-docs/dist/tags/field-types/index.html @@ -0,0 +1,16 @@ + + + + + +32 docs tagged with "Field types" | NocoDB + + + + +
+

32 docs tagged with "Field types"

View All Tags

Attachment

This article explains how to create & work with an Attachment field.

Barcode

This article explains how to create & work with a Barcode field.

Checkbox

This article explains how to create & work with a Checkbox field.

Currency

This article explains how to create & work with a Currency field.

Date

This article explains how to create & work with a Date field.

Date functions

This article explains various date functions that can be used in formula fields.

Date Time

This article explains how to create & work with a Date Time field.

Decimal

This article explains how to create & work with a Decimal field.

Duration

This article explains how to create & work with a Duration field.

Email

This article explains how to create & work with an Email field.

Formula

This article explains how to create & work with a Formula field.

Geometry

This article explains how to create & work with a Geometry field.

JSON

JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.

Links

This article explains how to create & work with a Links field.

Long text

This article explains how to create & work with a Long text field.

Lookup

This article explains how to create & work with a Lookup field.

Multi Select

This article explains how to create & work with a Multi select field.

Number

This article explains how to create & work with a Number field.

Numeric functions

This article explains various numeric functions that can be used in formula fields.

Percent

This article explains how to create & work with a Percent field.

Phone Number

This article explains how to create & work with a Phone number field.

QR code

This article explains how to create & work with a QR code field.

Rating

This article explains how to create & work with a Rating field.

Rollup

This article explains how to create & work with a Rollup field.

Single line text

This article explains how to create & work with a Single line text field.

Single Select

This article explains how to create & work with a Single select field.

Specific DB type

This article explains how to create & work with a Specific DB Type field.

String functions

This article explains various string functions that can be used in formula fields.

Time

This article explains how to create & work with a Time field.

URL

This article explains how to create & work with an URL field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/field-width/index.html b/packages/noco-docs/dist/tags/field-width/index.html new file mode 100644 index 0000000000..6fdfea04e8 --- /dev/null +++ b/packages/noco-docs/dist/tags/field-width/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Field Width" | NocoDB + + + + +
+

One doc tagged with "Field Width"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/fields/index.html b/packages/noco-docs/dist/tags/fields/index.html new file mode 100644 index 0000000000..7c34847403 --- /dev/null +++ b/packages/noco-docs/dist/tags/fields/index.html @@ -0,0 +1,16 @@ + + + + + +37 docs tagged with "Fields" | NocoDB + + + + +
+

37 docs tagged with "Fields"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

Attachment

This article explains how to create & work with an Attachment field.

Barcode

This article explains how to create & work with a Barcode field.

Checkbox

This article explains how to create & work with a Checkbox field.

Currency

This article explains how to create & work with a Currency field.

Date

This article explains how to create & work with a Date field.

Date functions

This article explains various date functions that can be used in formula fields.

Date Time

This article explains how to create & work with a Date Time field.

Decimal

This article explains how to create & work with a Decimal field.

Display value

This article explains how to set display value for a table & its use.

Duration

This article explains how to create & work with a Duration field.

Email

This article explains how to create & work with an Email field.

Fields overview

This article discusses various field types that NocoDB offers.

Formula

This article explains how to create & work with a Formula field.

Geometry

This article explains how to create & work with a Geometry field.

JSON

JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.

Links

This article explains how to create & work with a Links field.

Long text

This article explains how to create & work with a Long text field.

Lookup

This article explains how to create & work with a Lookup field.

Multi Select

This article explains how to create & work with a Multi select field.

Number

This article explains how to create & work with a Number field.

Numeric functions

This article explains various numeric functions that can be used in formula fields.

Percent

This article explains how to create & work with a Percent field.

Phone Number

This article explains how to create & work with a Phone number field.

Primary key

This article explains what a primary key is and how it is used in NocoDB.

QR code

This article explains how to create & work with a QR code field.

Rating

This article explains how to create & work with a Rating field.

Rollup

This article explains how to create & work with a Rollup field.

Single line text

This article explains how to create & work with a Single line text field.

Single Select

This article explains how to create & work with a Single select field.

Specific DB type

This article explains how to create & work with a Specific DB Type field.

String functions

This article explains various string functions that can be used in formula fields.

Time

This article explains how to create & work with a Time field.

URL

This article explains how to create & work with an URL field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/filter/index.html b/packages/noco-docs/dist/tags/filter/index.html new file mode 100644 index 0000000000..8d69d4bba7 --- /dev/null +++ b/packages/noco-docs/dist/tags/filter/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Filter" | NocoDB + + + + +
+

One doc tagged with "Filter"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/form-view/index.html b/packages/noco-docs/dist/tags/form-view/index.html new file mode 100644 index 0000000000..9452700dda --- /dev/null +++ b/packages/noco-docs/dist/tags/form-view/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Form view" | NocoDB + + + + +
+

5 docs tagged with "Form view"

View All Tags

Form

Learn how to create, import, and manage forms in NocoDB.

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/formula/index.html b/packages/noco-docs/dist/tags/formula/index.html new file mode 100644 index 0000000000..2148a7669c --- /dev/null +++ b/packages/noco-docs/dist/tags/formula/index.html @@ -0,0 +1,16 @@ + + + + + +6 docs tagged with "Formula" | NocoDB + + + + +
+

6 docs tagged with "Formula"

View All Tags

Date functions

This article explains various date functions that can be used in formula fields.

Formula

This article explains how to create & work with a Formula field.

Numeric functions

This article explains various numeric functions that can be used in formula fields.

String functions

This article explains various string functions that can be used in formula fields.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/gallery-view/index.html b/packages/noco-docs/dist/tags/gallery-view/index.html new file mode 100644 index 0000000000..e4af3f4796 --- /dev/null +++ b/packages/noco-docs/dist/tags/gallery-view/index.html @@ -0,0 +1,16 @@ + + + + + +10 docs tagged with "Gallery view" | NocoDB + + + + +
+

10 docs tagged with "Gallery view"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

Gallery

Learn how to work with gallery view in NocoDB.

Search

Learn how to search for records in NocoDB.

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/geometry/index.html b/packages/noco-docs/dist/tags/geometry/index.html new file mode 100644 index 0000000000..76bc57cddf --- /dev/null +++ b/packages/noco-docs/dist/tags/geometry/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Geometry" | NocoDB + + + + +
+

One doc tagged with "Geometry"

View All Tags

Geometry

This article explains how to create & work with a Geometry field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/getting-started/index.html b/packages/noco-docs/dist/tags/getting-started/index.html new file mode 100644 index 0000000000..788bc4afa7 --- /dev/null +++ b/packages/noco-docs/dist/tags/getting-started/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Getting Started" | NocoDB + + + + +
+

One doc tagged with "Getting Started"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/grid-view/index.html b/packages/noco-docs/dist/tags/grid-view/index.html new file mode 100644 index 0000000000..0bf549f194 --- /dev/null +++ b/packages/noco-docs/dist/tags/grid-view/index.html @@ -0,0 +1,16 @@ + + + + + +12 docs tagged with "Grid view" | NocoDB + + + + +
+

12 docs tagged with "Grid view"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

Grid

Learn how to work with grid view in NocoDB.

Record height

Learn how to adjust the height of records in NocoDB.

Search

Learn how to search for records in NocoDB.

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/group-by/index.html b/packages/noco-docs/dist/tags/group-by/index.html new file mode 100644 index 0000000000..0e3655f797 --- /dev/null +++ b/packages/noco-docs/dist/tags/group-by/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Group by" | NocoDB + + + + +
+

One doc tagged with "Group by"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/hide/index.html b/packages/noco-docs/dist/tags/hide/index.html new file mode 100644 index 0000000000..9e209021ed --- /dev/null +++ b/packages/noco-docs/dist/tags/hide/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Hide" | NocoDB + + + + +
+

One doc tagged with "Hide"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/import/index.html b/packages/noco-docs/dist/tags/import/index.html new file mode 100644 index 0000000000..01fafd0d7d --- /dev/null +++ b/packages/noco-docs/dist/tags/import/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Import" | NocoDB + + + + +
+

2 docs tagged with "Import"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/index.html b/packages/noco-docs/dist/tags/index.html new file mode 100644 index 0000000000..55c04146ad --- /dev/null +++ b/packages/noco-docs/dist/tags/index.html @@ -0,0 +1,16 @@ + + + + + +Tags | NocoDB + + + + + + + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/invite/index.html b/packages/noco-docs/dist/tags/invite/index.html new file mode 100644 index 0000000000..049367e56c --- /dev/null +++ b/packages/noco-docs/dist/tags/invite/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "Invite" | NocoDB + + + + +
+

4 docs tagged with "Invite"

View All Tags

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/json/index.html b/packages/noco-docs/dist/tags/json/index.html new file mode 100644 index 0000000000..a5548fa089 --- /dev/null +++ b/packages/noco-docs/dist/tags/json/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "JSON" | NocoDB + + + + +
+

4 docs tagged with "JSON"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

JSON

JSON is a custom field type that allows you to store JSON data in a field. Useful for storing data that can be represented as a JSON object, like API Response, or a set of key-value pairs.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/kanban-view/index.html b/packages/noco-docs/dist/tags/kanban-view/index.html new file mode 100644 index 0000000000..db14700e74 --- /dev/null +++ b/packages/noco-docs/dist/tags/kanban-view/index.html @@ -0,0 +1,16 @@ + + + + + +10 docs tagged with "Kanban view" | NocoDB + + + + +
+

10 docs tagged with "Kanban view"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

Kanban

Learn how to work with kanban view in NocoDB.

Search

Learn how to search for records in NocoDB.

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/links-based-types/index.html b/packages/noco-docs/dist/tags/links-based-types/index.html new file mode 100644 index 0000000000..9604dee1f2 --- /dev/null +++ b/packages/noco-docs/dist/tags/links-based-types/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "Links based types" | NocoDB + + + + +
+

3 docs tagged with "Links based types"

View All Tags

Links

This article explains how to create & work with a Links field.

Lookup

This article explains how to create & work with a Lookup field.

Rollup

This article explains how to create & work with a Rollup field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/links/index.html b/packages/noco-docs/dist/tags/links/index.html new file mode 100644 index 0000000000..00f46c1650 --- /dev/null +++ b/packages/noco-docs/dist/tags/links/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Links" | NocoDB + + + + +
+

One doc tagged with "Links"

View All Tags

Links

This article explains how to create & work with a Links field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/long-text/index.html b/packages/noco-docs/dist/tags/long-text/index.html new file mode 100644 index 0000000000..df9b1955ee --- /dev/null +++ b/packages/noco-docs/dist/tags/long-text/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Long text" | NocoDB + + + + +
+

One doc tagged with "Long text"

View All Tags

Long text

This article explains how to create & work with a Long text field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/lookup/index.html b/packages/noco-docs/dist/tags/lookup/index.html new file mode 100644 index 0000000000..120f60fc40 --- /dev/null +++ b/packages/noco-docs/dist/tags/lookup/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Lookup" | NocoDB + + + + +
+

One doc tagged with "Lookup"

View All Tags

Lookup

This article explains how to create & work with a Lookup field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/member/index.html b/packages/noco-docs/dist/tags/member/index.html new file mode 100644 index 0000000000..be16c02288 --- /dev/null +++ b/packages/noco-docs/dist/tags/member/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Member" | NocoDB + + + + +
+

2 docs tagged with "Member"

View All Tags

Profile page

This article explains how to manage your profile page.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/members/index.html b/packages/noco-docs/dist/tags/members/index.html new file mode 100644 index 0000000000..86e79c28bb --- /dev/null +++ b/packages/noco-docs/dist/tags/members/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "Members" | NocoDB + + + + +
+

4 docs tagged with "Members"

View All Tags

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/multi-fields-editor/index.html b/packages/noco-docs/dist/tags/multi-fields-editor/index.html new file mode 100644 index 0000000000..cc66b49251 --- /dev/null +++ b/packages/noco-docs/dist/tags/multi-fields-editor/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Multi-fields editor" | NocoDB + + + + +
+

One doc tagged with "Multi-fields editor"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/multi-select/index.html b/packages/noco-docs/dist/tags/multi-select/index.html new file mode 100644 index 0000000000..da001e4caf --- /dev/null +++ b/packages/noco-docs/dist/tags/multi-select/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Multi select" | NocoDB + + + + +
+

One doc tagged with "Multi select"

View All Tags

Multi Select

This article explains how to create & work with a Multi select field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/my-sql/index.html b/packages/noco-docs/dist/tags/my-sql/index.html new file mode 100644 index 0000000000..77dceb86d2 --- /dev/null +++ b/packages/noco-docs/dist/tags/my-sql/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "MySQL" | NocoDB + + + + +
+

2 docs tagged with "MySQL"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/number/index.html b/packages/noco-docs/dist/tags/number/index.html new file mode 100644 index 0000000000..55c7df2c89 --- /dev/null +++ b/packages/noco-docs/dist/tags/number/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Number" | NocoDB + + + + +
+

One doc tagged with "Number"

View All Tags

Number

This article explains how to create & work with a Number field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/numerical-types/index.html b/packages/noco-docs/dist/tags/numerical-types/index.html new file mode 100644 index 0000000000..7917d40c49 --- /dev/null +++ b/packages/noco-docs/dist/tags/numerical-types/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "Numerical types" | NocoDB + + + + +
+

4 docs tagged with "Numerical types"

View All Tags

Currency

This article explains how to create & work with a Currency field.

Decimal

This article explains how to create & work with a Decimal field.

Number

This article explains how to create & work with a Number field.

Percent

This article explains how to create & work with a Percent field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/open-source/index.html b/packages/noco-docs/dist/tags/open-source/index.html new file mode 100644 index 0000000000..bf106d5d6b --- /dev/null +++ b/packages/noco-docs/dist/tags/open-source/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Open Source" | NocoDB + + + + +
+

5 docs tagged with "Open Source"

View All Tags

In Open Source

This article explains Account settings specifics in Open source NocoDB.

In Open Source

This article explains specifics of User management in OSS.

Installation

Simple installation - takes about three minutes!

Upgrading

Upgrading NocoDB : Docker, Node and Homebrew!

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/overview/index.html b/packages/noco-docs/dist/tags/overview/index.html new file mode 100644 index 0000000000..298712f9d8 --- /dev/null +++ b/packages/noco-docs/dist/tags/overview/index.html @@ -0,0 +1,16 @@ + + + + + +12 docs tagged with "Overview" | NocoDB + + + + +
+

12 docs tagged with "Overview"

View All Tags

Base overview

This article explains the concept of bases in NocoDB.

Fields overview

This article discusses various field types that NocoDB offers.

Table overview

Learn how to create, import, and manage tables in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/percent/index.html b/packages/noco-docs/dist/tags/percent/index.html new file mode 100644 index 0000000000..7c92bed7ee --- /dev/null +++ b/packages/noco-docs/dist/tags/percent/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Percent" | NocoDB + + + + +
+

One doc tagged with "Percent"

View All Tags

Percent

This article explains how to create & work with a Percent field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/permissions/index.html b/packages/noco-docs/dist/tags/permissions/index.html new file mode 100644 index 0000000000..0aa3a32efa --- /dev/null +++ b/packages/noco-docs/dist/tags/permissions/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "Permissions" | NocoDB + + + + +
+

3 docs tagged with "Permissions"

View All Tags

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/pg/index.html b/packages/noco-docs/dist/tags/pg/index.html new file mode 100644 index 0000000000..c05a28acde --- /dev/null +++ b/packages/noco-docs/dist/tags/pg/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "PG" | NocoDB + + + + +
+

2 docs tagged with "PG"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/phone-number/index.html b/packages/noco-docs/dist/tags/phone-number/index.html new file mode 100644 index 0000000000..0dd1d87b43 --- /dev/null +++ b/packages/noco-docs/dist/tags/phone-number/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Phone number" | NocoDB + + + + +
+

One doc tagged with "Phone number"

View All Tags

Phone Number

This article explains how to create & work with a Phone number field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/primary-key/index.html b/packages/noco-docs/dist/tags/primary-key/index.html new file mode 100644 index 0000000000..478fc711a2 --- /dev/null +++ b/packages/noco-docs/dist/tags/primary-key/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Primary Key" | NocoDB + + + + +
+

One doc tagged with "Primary Key"

View All Tags

Primary key

This article explains what a primary key is and how it is used in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/productivity-hacks/index.html b/packages/noco-docs/dist/tags/productivity-hacks/index.html new file mode 100644 index 0000000000..f1a44d7db8 --- /dev/null +++ b/packages/noco-docs/dist/tags/productivity-hacks/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Productivity hacks" | NocoDB + + + + +
+

2 docs tagged with "Productivity hacks"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/profile/index.html b/packages/noco-docs/dist/tags/profile/index.html new file mode 100644 index 0000000000..2e7cf03b47 --- /dev/null +++ b/packages/noco-docs/dist/tags/profile/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Profile" | NocoDB + + + + +
+

One doc tagged with "Profile"

View All Tags

Profile page

This article explains how to manage your profile page.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/qr-code/index.html b/packages/noco-docs/dist/tags/qr-code/index.html new file mode 100644 index 0000000000..b664c6c6cb --- /dev/null +++ b/packages/noco-docs/dist/tags/qr-code/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "QR code" | NocoDB + + + + +
+

One doc tagged with "QR code"

View All Tags

QR code

This article explains how to create & work with a QR code field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/rating/index.html b/packages/noco-docs/dist/tags/rating/index.html new file mode 100644 index 0000000000..dbd9eab2f8 --- /dev/null +++ b/packages/noco-docs/dist/tags/rating/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Rating" | NocoDB + + + + +
+

One doc tagged with "Rating"

View All Tags

Rating

This article explains how to create & work with a Rating field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/record-height/index.html b/packages/noco-docs/dist/tags/record-height/index.html new file mode 100644 index 0000000000..7dc36962d6 --- /dev/null +++ b/packages/noco-docs/dist/tags/record-height/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Record Height" | NocoDB + + + + +
+

2 docs tagged with "Record Height"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

Record height

Learn how to adjust the height of records in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/records/index.html b/packages/noco-docs/dist/tags/records/index.html new file mode 100644 index 0000000000..72096d77d4 --- /dev/null +++ b/packages/noco-docs/dist/tags/records/index.html @@ -0,0 +1,16 @@ + + + + + +4 docs tagged with "Records" | NocoDB + + + + +
+

4 docs tagged with "Records"

View All Tags

Actions on record

Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/relations/index.html b/packages/noco-docs/dist/tags/relations/index.html new file mode 100644 index 0000000000..82b99d6bc9 --- /dev/null +++ b/packages/noco-docs/dist/tags/relations/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Relations" | NocoDB + + + + +
+

2 docs tagged with "Relations"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/remove/index.html b/packages/noco-docs/dist/tags/remove/index.html new file mode 100644 index 0000000000..2289c51b0e --- /dev/null +++ b/packages/noco-docs/dist/tags/remove/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Remove" | NocoDB + + + + +
+

One doc tagged with "Remove"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/rename/index.html b/packages/noco-docs/dist/tags/rename/index.html new file mode 100644 index 0000000000..55ac61df24 --- /dev/null +++ b/packages/noco-docs/dist/tags/rename/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Rename" | NocoDB + + + + +
+

5 docs tagged with "Rename"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/reorder/index.html b/packages/noco-docs/dist/tags/reorder/index.html new file mode 100644 index 0000000000..d7d47832c8 --- /dev/null +++ b/packages/noco-docs/dist/tags/reorder/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Reorder" | NocoDB + + + + +
+

One doc tagged with "Reorder"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/rest-ap-is/index.html b/packages/noco-docs/dist/tags/rest-ap-is/index.html new file mode 100644 index 0000000000..29da3f6d01 --- /dev/null +++ b/packages/noco-docs/dist/tags/rest-ap-is/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "REST APIs" | NocoDB + + + + +
+

One doc tagged with "REST APIs"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/roles/index.html b/packages/noco-docs/dist/tags/roles/index.html new file mode 100644 index 0000000000..68273b10a8 --- /dev/null +++ b/packages/noco-docs/dist/tags/roles/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Roles" | NocoDB + + + + +
+

5 docs tagged with "Roles"

View All Tags

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/rollup/index.html b/packages/noco-docs/dist/tags/rollup/index.html new file mode 100644 index 0000000000..fa0770707a --- /dev/null +++ b/packages/noco-docs/dist/tags/rollup/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Rollup" | NocoDB + + + + +
+

One doc tagged with "Rollup"

View All Tags

Rollup

This article explains how to create & work with a Rollup field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/search/index.html b/packages/noco-docs/dist/tags/search/index.html new file mode 100644 index 0000000000..391f3e47f5 --- /dev/null +++ b/packages/noco-docs/dist/tags/search/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Search" | NocoDB + + + + +
+

One doc tagged with "Search"

View All Tags

Search

Learn how to search for records in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/select-based-types/index.html b/packages/noco-docs/dist/tags/select-based-types/index.html new file mode 100644 index 0000000000..bad647105c --- /dev/null +++ b/packages/noco-docs/dist/tags/select-based-types/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Select based types" | NocoDB + + + + +
+

2 docs tagged with "Select based types"

View All Tags

Multi Select

This article explains how to create & work with a Multi select field.

Single Select

This article explains how to create & work with a Single select field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/share-base/index.html b/packages/noco-docs/dist/tags/share-base/index.html new file mode 100644 index 0000000000..e4bdfdecc7 --- /dev/null +++ b/packages/noco-docs/dist/tags/share-base/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Share base" | NocoDB + + + + +
+

One doc tagged with "Share base"

View All Tags

Share base

Procedures to share a base & generating embedded iframe

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/share/index.html b/packages/noco-docs/dist/tags/share/index.html new file mode 100644 index 0000000000..15dd67f157 --- /dev/null +++ b/packages/noco-docs/dist/tags/share/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Share" | NocoDB + + + + +
+

5 docs tagged with "Share"

View All Tags

Share base

Procedures to share a base & generating embedded iframe

Share base

Procedures to share a base publicly & generating embedded iframe

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/shortcuts/index.html b/packages/noco-docs/dist/tags/shortcuts/index.html new file mode 100644 index 0000000000..9ba3307cd3 --- /dev/null +++ b/packages/noco-docs/dist/tags/shortcuts/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Shortcuts" | NocoDB + + + + +
+

2 docs tagged with "Shortcuts"

View All Tags

Actions on record

Learn how to perform actions (edit, duplicate, delete, etc) on a record in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/show-hide/index.html b/packages/noco-docs/dist/tags/show-hide/index.html new file mode 100644 index 0000000000..7daa6461a8 --- /dev/null +++ b/packages/noco-docs/dist/tags/show-hide/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Show/hide" | NocoDB + + + + +
+

One doc tagged with "Show/hide"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/single-line-text/index.html b/packages/noco-docs/dist/tags/single-line-text/index.html new file mode 100644 index 0000000000..e5bdef4051 --- /dev/null +++ b/packages/noco-docs/dist/tags/single-line-text/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Single line text" | NocoDB + + + + +
+

One doc tagged with "Single line text"

View All Tags

Single line text

This article explains how to create & work with a Single line text field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/single-select/index.html b/packages/noco-docs/dist/tags/single-select/index.html new file mode 100644 index 0000000000..73fe9a9cae --- /dev/null +++ b/packages/noco-docs/dist/tags/single-select/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Single select" | NocoDB + + + + +
+

One doc tagged with "Single select"

View All Tags

Single Select

This article explains how to create & work with a Single select field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/sort/index.html b/packages/noco-docs/dist/tags/sort/index.html new file mode 100644 index 0000000000..23016a2141 --- /dev/null +++ b/packages/noco-docs/dist/tags/sort/index.html @@ -0,0 +1,16 @@ + + + + + +2 docs tagged with "Sort" | NocoDB + + + + +
+

2 docs tagged with "Sort"

View All Tags

Actions on field

This article explains how to perform various actions on a field- like rename, change field type, default, field width, record height, show/hide.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/specific-db-type/index.html b/packages/noco-docs/dist/tags/specific-db-type/index.html new file mode 100644 index 0000000000..f8405b0eed --- /dev/null +++ b/packages/noco-docs/dist/tags/specific-db-type/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Specific DB type" | NocoDB + + + + +
+

One doc tagged with "Specific DB type"

View All Tags

Specific DB type

This article explains how to create & work with a Specific DB Type field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/swagger/index.html b/packages/noco-docs/dist/tags/swagger/index.html new file mode 100644 index 0000000000..2fe4692be6 --- /dev/null +++ b/packages/noco-docs/dist/tags/swagger/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Swagger" | NocoDB + + + + +
+

One doc tagged with "Swagger"

View All Tags

Actions on base

Actions you can perform on a base in NocoDB: Rename, duplicate, delete, star a base.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/sync/index.html b/packages/noco-docs/dist/tags/sync/index.html new file mode 100644 index 0000000000..e4db0312af --- /dev/null +++ b/packages/noco-docs/dist/tags/sync/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Sync" | NocoDB + + + + +
+

One doc tagged with "Sync"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/table-details/index.html b/packages/noco-docs/dist/tags/table-details/index.html new file mode 100644 index 0000000000..3db2708311 --- /dev/null +++ b/packages/noco-docs/dist/tags/table-details/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Table details" | NocoDB + + + + +
+

One doc tagged with "Table details"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/table-operations/index.html b/packages/noco-docs/dist/tags/table-operations/index.html new file mode 100644 index 0000000000..b2ade1192b --- /dev/null +++ b/packages/noco-docs/dist/tags/table-operations/index.html @@ -0,0 +1,16 @@ + + + + + +8 docs tagged with "Table operations" | NocoDB + + + + +
+

8 docs tagged with "Table operations"

View All Tags

Download

NocoDB offers users the ability to export data from the spreadsheet grid in a variety of formats. This feature is useful when working with large datasets and can be used in conjunction with the Filter and Sort feature to further refine your data.

Record height

Learn how to adjust the height of records in NocoDB.

Search

Learn how to search for records in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/table/index.html b/packages/noco-docs/dist/tags/table/index.html new file mode 100644 index 0000000000..6b73a08508 --- /dev/null +++ b/packages/noco-docs/dist/tags/table/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Table" | NocoDB + + + + +
+

One doc tagged with "Table"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/tables/index.html b/packages/noco-docs/dist/tags/tables/index.html new file mode 100644 index 0000000000..7d16651846 --- /dev/null +++ b/packages/noco-docs/dist/tags/tables/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Tables" | NocoDB + + + + +
+

5 docs tagged with "Tables"

View All Tags

Table overview

Learn how to create, import, and manage tables in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/text-based-types/index.html b/packages/noco-docs/dist/tags/text-based-types/index.html new file mode 100644 index 0000000000..7e60ffb2be --- /dev/null +++ b/packages/noco-docs/dist/tags/text-based-types/index.html @@ -0,0 +1,16 @@ + + + + + +5 docs tagged with "Text based types" | NocoDB + + + + +
+

5 docs tagged with "Text based types"

View All Tags

Email

This article explains how to create & work with an Email field.

Long text

This article explains how to create & work with a Long text field.

Phone Number

This article explains how to create & work with a Phone number field.

Single line text

This article explains how to create & work with a Single line text field.

URL

This article explains how to create & work with an URL field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/ui-acl/index.html b/packages/noco-docs/dist/tags/ui-acl/index.html new file mode 100644 index 0000000000..51dbb8621a --- /dev/null +++ b/packages/noco-docs/dist/tags/ui-acl/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "UI ACL" | NocoDB + + + + +
+

One doc tagged with "UI ACL"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/upload/index.html b/packages/noco-docs/dist/tags/upload/index.html new file mode 100644 index 0000000000..5b9d0e3bc4 --- /dev/null +++ b/packages/noco-docs/dist/tags/upload/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Upload" | NocoDB + + + + +
+

One doc tagged with "Upload"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/url/index.html b/packages/noco-docs/dist/tags/url/index.html new file mode 100644 index 0000000000..8786f76d75 --- /dev/null +++ b/packages/noco-docs/dist/tags/url/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "URL" | NocoDB + + + + +
+

One doc tagged with "URL"

View All Tags

URL

This article explains how to create & work with an URL field.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/views/index.html b/packages/noco-docs/dist/tags/views/index.html new file mode 100644 index 0000000000..a309dc83d5 --- /dev/null +++ b/packages/noco-docs/dist/tags/views/index.html @@ -0,0 +1,16 @@ + + + + + +9 docs tagged with "Views" | NocoDB + + + + +
+

9 docs tagged with "Views"

View All Tags

Form

Learn how to create, import, and manage forms in NocoDB.

Gallery

Learn how to work with gallery view in NocoDB.

Grid

Learn how to work with grid view in NocoDB.

Kanban

Learn how to work with kanban view in NocoDB.

Share view

Learn how to share a view publicly in NocoDB.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/visibility/index.html b/packages/noco-docs/dist/tags/visibility/index.html new file mode 100644 index 0000000000..f223085c4c --- /dev/null +++ b/packages/noco-docs/dist/tags/visibility/index.html @@ -0,0 +1,16 @@ + + + + + +One doc tagged with "Visibility" | NocoDB + + + + +
+

One doc tagged with "Visibility"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/webhook/index.html b/packages/noco-docs/dist/tags/webhook/index.html new file mode 100644 index 0000000000..63adfa2982 --- /dev/null +++ b/packages/noco-docs/dist/tags/webhook/index.html @@ -0,0 +1,16 @@ + + + + + +3 docs tagged with "Webhook" | NocoDB + + + + +
+

3 docs tagged with "Webhook"

View All Tags
+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/tags/workspaces/index.html b/packages/noco-docs/dist/tags/workspaces/index.html new file mode 100644 index 0000000000..c882e6f413 --- /dev/null +++ b/packages/noco-docs/dist/tags/workspaces/index.html @@ -0,0 +1,16 @@ + + + + + +6 docs tagged with "Workspaces" | NocoDB + + + + +
+

6 docs tagged with "Workspaces"

View All Tags

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

Workspace collaboration

This article explains how to invite members to your workspace, change their roles and procedure to remove them from the workspace.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/actions-on-view/index.html b/packages/noco-docs/dist/views/actions-on-view/index.html new file mode 100644 index 0000000000..bbc5675d0f --- /dev/null +++ b/packages/noco-docs/dist/views/actions-on-view/index.html @@ -0,0 +1,18 @@ + + + + + +Actions on view | NocoDB + + + + +
+
Version: Latest

Actions on view

View context menu

The view context menu provides a set of tools to interact with the view. The view context menu can be accessed by clicking on the ellipsis symbol (...) located next to view in the left sidebar.

image

Rename view

  1. Click on the ellipsis symbol (...) next to view name located in the left sidebar.
  2. Click on the Rename option from the view context menu.
  3. Enter the desired new view name into the provided field.
  4. Use Enter key to finalize the renaming process.

image

Change view icon

  1. Click on the existing view icon to the left of the view name in the left sidebar.
  2. Select the desired icon from the list of available options.

image

Duplicate view

  1. Click on the ellipsis symbol (...) next to view name located in the left sidebar.
  2. Click on the Duplicate option from the view context menu.
  3. Enter the desired new view name into the provided field.
  4. Click on the Duplicate View button in the confirmation dialog.

image +image

Delete view

danger

This action cannot be undone.

  1. Click on the ellipsis symbol (...) next to view name located in the left sidebar.
  2. Click on the Delete option from the view context menu.
  3. Click on the Delete View button in the confirmation dialog.

image +image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/create-view/index.html b/packages/noco-docs/dist/views/create-view/index.html new file mode 100644 index 0000000000..93d857926c --- /dev/null +++ b/packages/noco-docs/dist/views/create-view/index.html @@ -0,0 +1,17 @@ + + + + + +Create view | NocoDB + + + + +
+
Version: Latest

Create view

Create new view

  1. Click on + on the left sidebar next to table name OR click on + New View button below table name.
  2. Select view type from the dropdown modal.
  3. Fill view name in the pop-up modal.
    • For Kanban view, select the Single select field to be used as the Kanban field.
  4. Click on Create View button.

image +image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/share-view/index.html b/packages/noco-docs/dist/views/share-view/index.html new file mode 100644 index 0000000000..bacfcbefad --- /dev/null +++ b/packages/noco-docs/dist/views/share-view/index.html @@ -0,0 +1,19 @@ + + + + + +Share view | NocoDB + + + + +
+
Version: Latest

Share view

Sharing a specific view of a table becomes highly valuable when you need to collaborate with individuals outside your organization who need access to specific sections of your database. This shared view provides a read-only perspective, accessible to anyone, regardless of their workspace affiliation. You have control over which data fields and records are visible to these external viewers, ensuring that any sensitive data remains hidden. Furthermore, if you decide to make changes to the visible fields or records within the view, the shared link will promptly reflect these adjustments, updating in real-time.

Generate Share View

  1. Click Share button on the top right of the toolbar
  2. Toggle Enable public viewing to create shared view link
  3. Click Copy button to copy the link to clipboard

share button

shared view

Share view options

Password protection

You can enable Restrict access with a password if you want a password-protected view

password protection

Download options

You can toggle Allow Download button to enable or disable download CSV/XLSX options in the shared view link

download options

Share Form View Options

Form view has additional customizations for shared view. You can enable/disable the following options for shared form view:

  1. Survey mode: This option when enabled, will display the form in survey mode.
  2. RTL Orientation: This option when enabled, will display the form in RTL orientation.
  3. Themes: You can select a theme for the form from the dropdown. +form view options

Access Share View

To access the shared view, please follow the steps below: +Click on the Shared View URL. If the URL is password-protected, you will be prompted to enter the password to unlock it. Please input the required password to proceed.

password modal

Once the password is successfully entered and authenticated, you will gain access to the shared view. +In the event that the URL is not password-protected, you will be directed to the shared view directly, without the need for a password.

share-view

Users with the shared view link can only view the data and cannot make any changes to the view or its content. Records and fields in the shared view will be updated in real-time as changes are made to the original view. Users accessing shared view can apply filters and sort records as per their requirements.

info

Note that, filters & sorts applied to shared view will not be persisted. These filters & sorts will be reset when the shared view is accessed again.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/view-types/form/index.html b/packages/noco-docs/dist/views/view-types/form/index.html new file mode 100644 index 0000000000..1c745fe23b --- /dev/null +++ b/packages/noco-docs/dist/views/view-types/form/index.html @@ -0,0 +1,18 @@ + + + + + +Form | NocoDB + + + + +
+
Version: Latest

Form

Form View allows you to arrange fields in a form to input data.

1010-2 Form

Form View Builder

Form view builder layout can be divided into 3 sections:

  1. Fields Area - This is the area where fields available in the tables that are not yet added to the form are listed.
  2. Form Area - This is the area where fields added to the form are listed.
  3. Form Settings - This is the area where you can configure the form view. This mainly consists of actions & customisations that can be performed after a form view is submitted.

Form Builder

Form View Actions

  1. Create a New Form View
  2. Rename an Existing Form View
  3. Duplicate a Form View
  4. Remove a Form View
  5. Share a Form View
  6. Lock Form View for Edits

Form View Operations

Add Form Title & Description

In the Form View area, click on in input boxes provided for Title <1> & Description <2> to add/update title & description to the form.

Form Title &amp; Description

Add Fields to the Form

To add a field to the form, either

  • Drag and drop the field from the Fields Area to the Form Area at required position
  • Click on the field in the Fields Area to add it to the end of the Form Area

Change field label & help-text

To change the field label displayed on the form & add help-text, click on the field in the Form Area and update the values in the input boxes provided for Label <1> & Help Text <2>.

Field Label &amp; Help Text

Mark a Field as Required

To mark a field as required, click on the field in the Form Area and toggle the Required switch.

Required Field

Rearrange Fields Within the Form

To rearrange fields within the form, drag and drop the field to the required position.

Remove Fields from the Form

To remove a field from the form, either

  • Drag and drop the field from the Form Area to the Fields Area
  • Hover over the field in the Form Area and click on the hide icon

Hide Field

Add a New Field to the Table

To add a new field to the table,

  • Click on the + Add new field to this table in the Fields Area and
  • Select the field name & type from the dropdown.
  • Click on Save Field

Add Field

Form View Settings

NocoDB allows you to configure the form view to perform various actions after a form is submitted. These actions can be configured in the Form Settings area.

  1. After Submit Message: You can configure a message to display on successful submission of the form.
  2. Show Submit Another Form Button: This option when enabled, will display a Submit Another Form button after the form is submitted.
  3. Show a Blank form: This option when enabled, will display a new blank form 5 seconds after the form is submitted.
  4. Email me: Enable this option to receive an Email after the form is submitted.

Form View Settings

Survey Form View

NocoDB supports a special type of form view called Survey Form View. This view is ideal for creating surveys & questionnaires. This view can be enabled by toggling the Survey Mode switch when creating shared form view.

When enabled,

  • Form input fields will be displayed one at a time.
  • Users can navigate between fields using the < & > buttons.

Survey Form View

Form View
+Gallery View
+Kanban View

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/view-types/gallery/index.html b/packages/noco-docs/dist/views/view-types/gallery/index.html new file mode 100644 index 0000000000..e5bf04a980 --- /dev/null +++ b/packages/noco-docs/dist/views/view-types/gallery/index.html @@ -0,0 +1,18 @@ + + + + + +Gallery | NocoDB + + + + +
+
Version: Latest

Gallery

Gallery View allows you to display images as thumbnails with other fields just like a gallery. This view type is ideal for viewing images in a gallery-like interface. Like in Gallery, you can also perform various operations on the gallery view, such as sorting, filtering, grouping, and searching. You can also export the data in the gallery view to CSV or Excel format. This section will cover all the operations that can be performed on the gallery view.

1010-2 Gallery

  1. Create a New Gallery View
  2. Rename an Existing Gallery View
  3. Duplicate a Gallery View
  4. Remove a Gallery View
  5. Share a Gallery View
  6. Lock Gallery View for Edits
  1. Rearrange Fields Within the Gallery
  2. Show or Hide Fields Within the Gallery
  3. Apply Filters to Display Specific Records on the Gallery
  4. Sort Records on the Gallery by One or More Criteria
  5. Perform Quick Searches for Specific Data Within Fields
  6. Export Data to CSV or Excel Format
  7. Change Cover Image
  1. Add a New Record to the Gallery: Currently it is not possible to insert a new record directly on the gallery view. However, you can add a new record to the table, and it will be displayed on the gallery view.
  2. Edit an Existing Record on the Gallery: Click on the card on the gallery view to open the record in the expanded record view. You can edit the record in the form view and save it.
  3. Delete a Single Record from the Gallery: Click on the card on the gallery view to open the record in the expanded record view. You can delete the record in the form view by using the expanded record context menu.
  4. Delete Multiple Records in Bulk from the Gallery: Currently it is not possible to delete multiple records in bulk directly on the gallery view. However, you can delete multiple records in bulk from the grid view & it will be reflected on the gallery view.

Grid View
+Form View
+Kanban View

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/view-types/grid/index.html b/packages/noco-docs/dist/views/view-types/grid/index.html new file mode 100644 index 0000000000..05cd98af9d --- /dev/null +++ b/packages/noco-docs/dist/views/view-types/grid/index.html @@ -0,0 +1,18 @@ + + + + + +Grid | NocoDB + + + + +
+
Version: Latest

Grid

Grid View, as a default type of view, allows you to display your data in a spreadsheet-like interface using rows and columns. Rows are as referred to as records and columns as fields in NocoDB.

1010-2 Grid

Grid view is the default view type for all tables. This view type is ideal for viewing and editing data in a spreadsheet-like interface. You can also perform various operations on the grid view, such as sorting, filtering, grouping, and searching. You can also export the data in the grid view to CSV or Excel format. This section will cover all the operations that can be performed on the grid view.

Grid View Actions

  1. Create a New Grid View
  2. Rename an Existing Grid View
  3. Duplicate a Grid View
  4. Remove a Grid View
  5. Share a Grid View
  6. Lock Grid View for Edits

Grid View Operations

  1. Rearrange Fields Within the Grid
  2. Show or Hide Fields Within the Grid
  3. Apply Filters to Display Specific Records on the Grid
  4. Sort Records on the Grid by One or More Criteria
  5. Group Records Horizontally on the Grid
  6. Search for Specific Data Within Fields
  7. Export Data to CSV or Excel Format
  8. Adjust Record Height on the Grid
  9. Customize Field Width
  10. Toggle Field Visibility on the Grid

Grid View Record Operations

  1. Add a New Record to the Grid
  2. Edit an Existing Record on the Grid
  3. Delete a Single Record from the Grid
  4. Delete Multiple Records in Bulk from the Grid

Gallery View
+Form View
+Kanban View

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/view-types/kanban/index.html b/packages/noco-docs/dist/views/view-types/kanban/index.html new file mode 100644 index 0000000000..af1fd5b7a1 --- /dev/null +++ b/packages/noco-docs/dist/views/view-types/kanban/index.html @@ -0,0 +1,18 @@ + + + + + +Kanban | NocoDB + + + + +
+
Version: Latest

Kanban

Kanban View allows you to visualise your data using cards as part of various stacks on the board. You can easily rearrange the cards by dragging and dropping them to different stacks. This section will cover all the operations that can be performed on the Kanban view.

1010-2 Kanban

Kanban View Actions

  1. Create a New Kanban View
  2. Rename an Existing Kanban View
  3. Duplicate a Kanban View
  4. Remove a Kanban View
  5. Share a Kanban View
  6. Lock Kanban View for Edits

Kanban View Operations

  1. Rearrange Fields Within the Kanban
  2. Show or Hide Fields Within the Kanban
  3. Apply Filters to Display Specific Records on the Kanban
  4. Sort Records on the Kanban by One or More Criteria
  5. Perform Quick Searches for Specific Data Within Fields
  6. Export Data to CSV or Excel Format
  7. Change Cover Image

Kanban View Stacked-by field Operations

Change Stacked by Field

You can change the field by which the records are stacked on the kanban view by following the steps below:

  1. Click on the Stacked by menu in the toolbar.
  2. Click on field name that is currently selected as the stacked-by field.
  3. From the dropdown, select the new field by which you want to stack the records.

Change Stacked by Field

Add/modify Stacked-by Field Options

You can add/modify options on the stacked-by single select field by following the steps below:

  1. Click on the Stacked by menu in the toolbar. Dropdown lists all Select Options that are available on this field.
  2. Add/modify as required.
  3. Click on Save to save the changes.

Add/modify option on the stacked-by single select field

Collapse Stack

To ease the view of the kanban, you can collapse the stack by following the steps below:

  1. Click on the dropdown icon on the stack header.
  2. Select Collapse Stack from the dropdown.
  3. Collapsed Stack will be displayed as vertical bars on the kanban view as displayed below.

Collapse Stack

Delete Stack

To delete a stack from the kanban view, follow the steps below:

  1. Click on the dropdown icon on the stack header.
  2. Select Delete Stack from the dropdown.
  3. A confirmation dialog will be displayed. Click on Delete to delete the stack.

Delete Stack

Delete Stack Confirmation

Reorder Stacks

You can reorder the stacks on the kanban view by dragging and dropping the stack to the desired position.

Kanban View Record Operations

Move Records within Stacks

You can move records within a stack by dragging and dropping the card to the desired position within the stack.

Add a New Record to the Kanban

On kanban, you can add a new record directly to a particular stack by using Add Record button on the stack footer. This opens up an expanded record view where you can enter the data for the new record. Once you save the record, it will be displayed on the kanban view. You can also add a new record to the table, and it will be displayed on the kanban view.

Add Record

Edit an Existing Record on the Kanban

Click on the card on the kanban view to open the record in the expanded record view. You can edit the record in the expanded record view and save it.

Delete a Single Record from the Kanban

Right-click on the card to access the context menu and select the Delete option.

Grid View
+Kanban View
+Form View

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/views/views-overview/index.html b/packages/noco-docs/dist/views/views-overview/index.html new file mode 100644 index 0000000000..0aa09028e2 --- /dev/null +++ b/packages/noco-docs/dist/views/views-overview/index.html @@ -0,0 +1,20 @@ + + + + + +View overview | NocoDB + + + + +
+
Version: Latest

View overview

Views within NocoDB not only allow you to tailor the visual presentation to your liking but also provide independent +control over sorting and filtering of records within each view. Each view maintains its unique configuration for +filters, data display, and enabled fields, ensuring that modifications of these configuration does not impact any other view. +This feature empowers users to efficiently personalize their data visualization while +maintaining the integrity of other views.

info

View represents data from a table. Any updates to records in a view will be reflected in all other views of the same table.

View Types Supported

  1. Grid View
  2. Form View
  3. Gallery View
  4. Kanban View

View Permission Types

We can apply permission to each View. By default, views are Collaborative. To see or change the view type, expand view-tool-bar-menu as shown below.

locked view

Collaborative Views (default)

By default, views are set to "Collaborative," allowing members with edit permissions or higher to modify view configurations. In this mode, all members can read and write data to the view. This is the default mode for all views.

Locked Views

With "Locked Views," no one can edit the view configurations until they are unlocked. In this mode, all members are restricted to reading data from the view and are unable to make any changes to its settings or content. This mode is useful when you want to share a view with others but don't want them to make any changes to it.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/workspaces/actions-on-workspace/index.html b/packages/noco-docs/dist/workspaces/actions-on-workspace/index.html new file mode 100644 index 0000000000..85dc414815 --- /dev/null +++ b/packages/noco-docs/dist/workspaces/actions-on-workspace/index.html @@ -0,0 +1,17 @@ + + + + + +Actions on workspace | NocoDB + + + + +
+
Version: Latest

Actions on workspace

Rename workspace

To update the workspace name:

  1. Navigate to the Team & Settings option in the left sidebar to access the Workspace configuration page.
  2. Select the Settings tab.
  3. Enter the new desired workspace name in the Workspace Name field.
  4. Confirm the change by clicking on the Rename Workspace button.

image

Delete workspace

If you determine that a workspace is no longer necessary, you have the option to permanently remove it from your settings. Deleting a workspace will delete all the bases and data associated with it.

danger

This action cannot be undone.

info

Only workspace owner can delete a workspace.

To remove a workspace:

  1. Open the Workspace configuration page by selecting Team & Settings from the left sidebar.
  2. Access the Settings tab.
  3. Click on the Delete Workspace button.
  4. Provide the workspace name as confirmation for deletion.
  5. Confirm the action by clicking the Delete Workspace button in the confirmation dialog box.

image +image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/workspaces/create-workspace/index.html b/packages/noco-docs/dist/workspaces/create-workspace/index.html new file mode 100644 index 0000000000..b5ca3a518b --- /dev/null +++ b/packages/noco-docs/dist/workspaces/create-workspace/index.html @@ -0,0 +1,20 @@ + + + + + +Create workspace | NocoDB + + + + +
+
Version: Latest

Create workspace

Upon signing up to NocoDB, an initial workspace is automatically generated on your behalf. +Then you have the ability to either modify its name or creating an entirely new workspace.

In the following section, lets look at the process of creating your NocoDB workspaces.

Create a workspace

  1. Navigate to the top-left corner of the sidebar and select the Workspace name to access the Workspace context menu.
  2. From the Workspace context menu, opt for the Create workspace button.
  3. Provide a name for the workspace
  4. Proceed by clicking the Create Workspace button.

image

image

When you start a new workspace, you automatically become the owner. +Once your workspace is set up, you can create tables and invite others to join and work together. +You can invite as many people as you want, and you can create as many tables as you need in your workspace. +But remember, there can only be one owner, and only the owner can delete the workspace.

info

The Open Source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces.

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/workspaces/workspace-collaboration/index.html b/packages/noco-docs/dist/workspaces/workspace-collaboration/index.html new file mode 100644 index 0000000000..2abca24176 --- /dev/null +++ b/packages/noco-docs/dist/workspaces/workspace-collaboration/index.html @@ -0,0 +1,17 @@ + + + + + +Workspace collaboration | NocoDB + + + + +
+
Version: Latest

Workspace collaboration

Next logical step after creating a workspace is to invite members to it. In this section, we will guide you through the process of inviting members to your workspace. +A comprehensive guide regarding roles and permissions can be accessed here.

Invite members to Workspace

  1. Navigate to the Workspace configuration page by selecting Team & Settings in the left sidebar.
  2. Access the Members tab.
  3. Input the email address of the intended member for the invitation.
  4. Click on Role dropdown menu
  5. Choose the appropriate access permission for the member from the dropdown menu.
  6. Conclude the process by selecting the Add Member(s) button.

image

tip

You can invite multiple members simultaneously by entering their email addresses, separated by commas.

List Workspace members

The Members tab in Team & Settings displays a list of users who have been granted access to the workspace.

  1. Navigate to the Workspace configuration page by selecting Team & Settings in the left sidebar.
  2. Access the Members tab.

image

Modify Workspace Member Roles

You can modify the access permissions of members by following these steps:

  1. Navigate to the Workspace configuration page by selecting Team & Settings in the left sidebar.
  2. Access the Members tab.
  3. Access the dropdown menu.
  4. Select the desired new role option.

image

Remove Workspace Members

To remove a member from the workspace, take the following steps:

  1. Navigate to the Workspace configuration page by selecting Team & Settings in the left sidebar.
  2. Access the Members tab.
  3. Click on the vertical ellipses to open the context menu.
  4. Select the Remove User option.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/dist/workspaces/workspace-overview/index.html b/packages/noco-docs/dist/workspaces/workspace-overview/index.html new file mode 100644 index 0000000000..94ad6af46c --- /dev/null +++ b/packages/noco-docs/dist/workspaces/workspace-overview/index.html @@ -0,0 +1,17 @@ + + + + + +Workspace overview | NocoDB + + + + +
+
Version: Latest

Workspace overview

In NocoDB, workspaces play a pivotal role in facilitating collaborative and organized data management. A workspace serves as a container for one or more bases, allowing users to bring together interconnected tables, views, and various elements into a unified and coherent entity. Each workspace can house multiple bases, enabling users to categorize and structure their data in a way that suits their specific needs. Whether you're tracking projects, managing databases, or organizing information, NocoDB's workspaces provide the flexibility and organization required to make data-driven decisions and foster collaboration within your team. Additionally, workspaces allow for the assignment of specific access permissions to workspace members, ensuring that data security and privacy are maintained while enabling effective teamwork.

Some key points to note about workspaces are:

  1. Each workspace contains its own set of bases, keeping your data separate and well-organized.
  2. Workspaces have their own set of members and permissions, allowing you to control who can access and modify data within each workspace.
  3. Workspaces offer unique settings and billing options, letting you customize configurations to suit specific needs.
  4. Bases are tied exclusively to one workspace and can't be moved between workspaces, ensuring data integrity.
  5. Members can be part of multiple workspaces. You can also fine-tune their roles within each workspace.

In summary, NocoDB workspaces streamline data management and member control, providing the flexibility and oversight necessary for various projects and teams.

info

The Open Source NocoDB includes a default workspace, and it does not allow the creation of additional workspaces.

Workspace context menu

The workspace context menu, conveniently located in the left top of sidebar, provides a list of all the workspaces accessible to you. +You can easily switch between different workspaces by simply clicking on the respective workspace name within this menu.

image

+ + + + \ No newline at end of file diff --git a/packages/noco-docs/docs/070.fields/010.fields-overview.md b/packages/noco-docs/docs/070.fields/010.fields-overview.md index d3163dd5a7..0dbc6913ef 100644 --- a/packages/noco-docs/docs/070.fields/010.fields-overview.md +++ b/packages/noco-docs/docs/070.fields/010.fields-overview.md @@ -31,8 +31,8 @@ keywords : ['NocoDB fields', 'fields overview', 'field administration', 'field o ### Select based - [Single select](field-types/select-based/single-select) - [Multi select](field-types/select-based/multi-select) -- [Checkbox](field-types/custom-types/checkbox) -- [Rating](field-types/custom-types/rating) +- [Checkbox](field-types/select-based/checkbox) +- [Rating](field-types/select-based/rating) ### Link based - [Links](field-types/links-based/links)